我有一张桌子
“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/

10-10 10:08
查看更多