2017-03-07 48 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

非常感謝 –