如何在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)我需要一个字或什么的下一个值。
我找不到任何有用的希望有人在这里可以帮助我。
布拉姆
答
没有关键词来获得下一个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."";
而你的问题是?你需要什么? – 2014-11-25 09:47:28
请详细解释你的问题.. – 2014-11-25 09:50:18
在我的选择我有那么最小(id)ELSE最大(id),而不是最大(id)我需要一个单词或什么的下一个值 – Bramos 2014-11-25 09:53:57