MySQL的搜索最小值不使用值和附加条件
问题描述:
我有一个表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"
?
答
您需要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
非常感谢 –
我能想到的任何合理的理由,你为什么会婉做到这一点。 – Strawberry
该表格还有几列。 id是行顺序,col2是类别。 id是不是主键 –
我的评论立场(尽管有印刷错误)。 – Strawberry