2017-03-07 58 views
1

我有一个表tbl MySQL的是这样的:MySQL的搜索最小值不使用值和附加条件

+----+------+ 
| id | col2 | 
+----+------+ 
| 1 | AAA | 
| 1 | BBB | 
| 2 | AAA | 
| 3 | AAA | 
| 3 | BBB | 
| 4 | AAA | 
+----+------+ 

如何选择第一个未使用的ID为col2其中col2="BBB"(例如回报2)。

基本的查询是:

SELECT t1.id+1 AS UnusedID 
FROM tbl AS t1 
LEFT JOIN tbl AS t2 ON t1.id+1 = t2.id 
WHERE t2.id IS NULL 
ORDER BY t1.id LIMIT 1; 

但如何添加条件cl2="BBB"

+0

我能想到的任何合理的理由,你为什么会婉做到这一点。 – Strawberry

+0

该表格还有几列。 id是行顺序,col2是类别。 id是不是主键 –

+0

我的评论立场(尽管有印刷错误)。 – Strawberry

回答

1

您需要ON子句中的条件和条款WHERE

SELECT t1.id + 1 AS UnusedID 
FROM tbl t1 LEFT JOIN 
    tbl t2 
    ON t1.id + 1 = t2.id AND t2.col2 = t1.col2 
WHERE t1.col2 = 'BBB' AND t2.id IS NULL 
ORDER BY t1.id 
LIMIT 1; 
+0

谢谢,但它不起作用 –

+0

@DomenicoFormoso。 。 。 where子句中的条件需要在第一个表上,而不是第二个表中。 –

+0

非常感谢 –

相关问题