dongping9475 2014-11-25 09:41
浏览 22
已采纳

如何在SQL查询中使用ELSE?

I have an SQL query to load items from my database.

$sql_query = "SELECT * FROM pagina_info 
              WHERE kwali='Luxuary' AND 
                    id IN (
                           SELECT CASE WHEN kwali='Luxuary' THEN min(id) 
                                       ELSE max(id) 
                           END 
                           FROM pagina_info 
                           GROUP BY product_name
                          ) 
               AND voorraad>='1' 
               LIMIT ".$getal1.", ".$getal2."";

Now my question, is there a word that i can use in my ELSE state for taking the next value?

in my select i have THEN min(id) ELSE max(id), instead of max(id) i need a word or something for next value.

I can't find anything usefull hopefully anyone here can help me.

Bram

  • 写回答

1条回答 默认 最新

  • dongwei1954 2014-11-25 11:06
    关注

    There is no key word to get the next id. But I am unsure if you mean the next id for that series of records, or the next id that will be assigned as an auto increment primary key.

    Assuming the first you could use a user variable to add a sequence number, or you could join the table against itself where the 2nd copy has a larger id but matches on the product name.

    Depending on your exact requirements (some table layouts and test data would help) then something like one of these would work.

    Firstly, sub query being used with an IN clause

    SELECT * 
    FROM pagina_info 
    WHERE kwali='Luxuary'
    AND id IN 
    (   
        SELECT CASE 
                    WHEN kwali='Luxuary' THEN min(a.id) 
                    ELSE min(b.id) 
                END 
        FROM pagina_info a
        LEFT OUTER JOIN pagina_info b
        ON a.product_name = b.product_name
        AND a.id < b.id
        GROUP BY a.product_name
    ) 
    AND voorraad>='1' 
    LIMIT ".$getal1.", ".$getal2."";    
    

    Or doing a join against a sub query.

    SELECT pagina_info.* 
    FROM pagina_info 
    INNER JOIN 
    (
        SELECT CASE 
                    WHEN kwali='Luxuary' THEN min(a.id) 
                    ELSE min(b.id) 
                END AS id
        FROM pagina_info a
        LEFT OUTER JOIN pagina_info b
        ON a.product_name = b.product_name
        AND a.id < b.id
        GROUP BY a.product_name
    ) c
    ON pagina_info.id = c.id
    WHERE pagina_info.kwali='Luxuary'
    AND pagina_info.voorraad>='1' 
    LIMIT ".$getal1.", ".$getal2."";
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 csmar数据进行spss描述性统计分析
  • ¥15 各位请问平行检验趋势图这样要怎么调整?说标准差差异太大了
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 wpf界面一直接收PLC给过来的信号,导致UI界面操作起来会卡顿
  • ¥15 init i2c:2 freq:100000[MAIXPY]: find ov2640[MAIXPY]: find ov sensor是main文件哪里有问题吗
  • ¥15 运动想象脑电信号数据集.vhdr
  • ¥15 三因素重复测量数据R语句编写,不存在交互作用
  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?