2017-09-23 41 views
0

所以,我有以下表和PHP的一個變量具有這些值:14,16通過不同行的Mysql檢查組合

combo table

如何檢查如果上述數字組合的存在表?上面的組合存在與ID 3.我不想檢查數字的順序(例如「16,14」或「14,16」)

我希望你不會感到困惑!

+0

歡迎來到Stack Overflow。你已經嘗試過這麼做了嗎?請回顧[我如何問一個好問題](https://stackoverflow.com/help/how-to-ask)。堆棧溢出不是一種編碼服務。預計您會在發佈之前研究您的問題,並嘗試親自編寫代碼***。如果您遇到* specific *,請返回幷包含[Minimal,Complete和Verifiable示例](https://stackoverflow.com/help/mcve)以及您嘗試的內容摘要,以便我們提供幫助。 – FluffyKitten

+0

3和4都有14和16,不僅是3?!! – 2017-09-23 11:03:44

回答

2

你只需要GROUP BYCOUNTHAVING

SELECT id 
FROM tablename 
WHERE optid IN(14, 16) 
GROUP BY id 
HAVING COUNT(DISTINCT optid) = 2; 
  • WHERE optid IN(14, 16)將確保ID有這些數字。
  • COUNT DISTINCT將刪除所有ID期望那些有兩個optid

demo

結果:

| id | 
|----| 
| 3 | 
| 4 | 

需要注意的是:此查詢會給你那些id有至少14 and 16。因此,它就會給你帶來3和4

但是如果你想要那些有整整14和16並沒有更多的東西,那麼試試這個:

SELECT id 
FROM tablename 
WHERE optid IN(14, 16) 
    AND id not in (SELECT id from tablename where optid not in(14,16)) 
GROUP BY id 
HAVING COUNT(DISTINCT optid) = 2; 

這會給你:

| id | 
|----| 
| 3 | 

Demo

+0

非常感謝你! 2天我正在尋找這個! :) –