这有点复杂,因为我们需要为名称找到最后一个不是0的条目。 (我会自然地倾向于按日期排序,但你说的ID是去什么。)
SELECT t1.name, max(t1.id) as check_id FROM table t1 WHERE quantity > 0 GROUP BY name
现在,你可以得到的最低数量大于给定check_id更高的每个名字:
SELECT name, min(t2.id) FROM table t2
JOIN (SELECT t1.name, max(t1.id) as check_id FROM table t1 WHERE quantity > 0 GROUP BY name) as a ON a.name=t2.name
WHERE t2.quantity = 0 AND t2.id > a.id
GROUP BY t2.name
有一个问题。它将排除只有0数量的每个人。如果这可能发生,你需要用下面的代码另一个查询(只得到0值)
SELECT name, min(id) as check_id, sum(quantity) as qty_sum FROM table
GROUP BY name
HAVING qty_sum = 0
来源
2016-12-02 11:01:10
Seb
'SELECT *在哪里ID = 9或ID = 3'? – ColinM
否..我需要基于用户名的查询...需要所有用户或单独用户使用他们的最后第一个插入的零记录详细信息 –
对于x用户,如何使用id作为最后一个插入的0是由id 4. – Nitin