如何在SQL查询中使用ELSE?

问题描述:

我有一个SQL查询来加载我的数据库中的项目。如何在SQL查询中使用ELSE?

$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.""; 

现在我的问题,是否有一个词,我可以在我的ELSE状态用于获取下一个值?

在我的选择我有那么最小(ID)ELSE最大(ID),而不是最大(ID)我需要一个字或什么的下一个值。

我找不到任何有用的希望有人在这里可以帮助我。

布拉姆

+0

而你的问题是?你需要什么? – 2014-11-25 09:47:28

+0

请详细解释你的问题.. – 2014-11-25 09:50:18

+0

在我的选择我有那么最小(id)ELSE最大(id),而不是最大(id)我需要一个单词或什么的下一个值 – Bramos 2014-11-25 09:53:57

没有关键词来获得下一个ID。但是我不确定您的意思是该系列记录的下一个ID,还是指定为自动增量主键的下一个ID。

假设第一个可以使用用户变量添加序列号,或者您可以将第二个副本的ID较大但与产品名称匹配的表与自身联接。

根据您的具体要求(一些表格布局和测试数据会有所帮助),那么像其中之一的东西就可以工作。

首先,用IN子句

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."";  

或做一个对加入一个子查询中使用子查询。

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."";