我有一个SQL查询来从我的数据库加载项目。
$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状态下使用下一个值吗?
在我的选择中我有THEN min(id)ELSE max(id),而不是max(id)我需要一个单词或其他东西作为下一个值。
我无法找到任何有用的东西,希望这里的任何人都可以帮助我。
的Bram
答案 0 :(得分:1)
没有关键词可以获得下一个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."";