我有一张桌子
“id”作为主字段并设置为自动递增..
varchar.类型的“name”。
varchar.类型的“category”。
表内容::。
*id=1,name=abc,category=tv
*id=2,name=abc,category=radio
*id=3,name=abc,category=tv
*id=4,name=abc,category=radio
*id=5,name=abc,category=tv
*id=6,name=abc,category=tv
现在,我要选择category=“tv”的最新行,即仅第5行、第6行
这只是一个例子,真正的表格可能有许多类别,我希望我清楚地提出我的问题…
请帮忙……
从给出的答案…这个查询显示了我想要的结果::。
SELECT * FROM test WHERE id > (SELECT id FROM test WHERE category !="tv" ORDER BY id DESC LIMIT 1)
但是,当我向表中再添加一行时,查询没有显示任何结果,我可以理解为什么..$$$$需要特定类别的最后一个块$$$$
最佳答案
我想这是你需要的。
SELECT * FROM table
WHERE id >
(SELECT id FROM table
WHERE category !=
(SELECT category FROM table
ORDER BY id DESC LIMIT 1)
ORDER BY id DESC LIMIT 1);
最内部的选择是查找最后一个类别块的类别。中间的select正在查找最后一行的id,这是一个不同的类别。然后外部选择将选择该id之后的所有行。因此,它将查找属于最终类别块的所有行。
编辑:
SELECT * FROM table
WHERE category = 'radio' && id >
(SELECT id FROM table
WHERE category != 'radio' && id <
(SELECT id FROM table WHERE category = 'radio' ORDER BY id DESC LIMIT 1)
ORDER BY id DESC LIMIT 1)
我想那应该能满足你的需要。请注意,在您要查找的类别中,有3个位置需要放入(在本例中,它要查找“radio”)。
关于database - mysql查询帮助?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1250926/