原諒這個長度,這很難解釋!SQL SELECT WHERE子查詢(多行)=子查詢(多行)
我有兩個表:
t_people
----------------------------------------
| ID | surname | forenames |
----------------------------------------
| 1 | Baggins | Frodo |
----------------------------------------
| 2 | Took | Peregrin |
----------------------------------------
| 3 | Baggins | Bilbo |
----------------------------------------
t_courseResults
--------------------------
| personID | result |
--------------------------
| 1 | 98.0% |
--------------------------
| 2 | 14.0% |
--------------------------
| 3 | 56.0% |
--------------------------
我然後執行以下語句:
SELECT result FROM t_courseResults WHERE personID IN (SELECT ID FROM t_people WHERE surname like '%B')
...返回所有的課程結果所有的人以姓氏以「B」開頭(2行)。
現在讓我們假設我有存儲的人的靜態列表(例如,在一個特定的部門的人名單)
t_staticList
-------------
| personID |
-------------
| 2 |
-------------
| 3 |
-------------
然後我會想這樣執行的東西第三張表:
SELECT result FROM t_courseResults WHERE (SELECT personID FROM t_staticList) IN (SELECT ID FROM t_people WHERE surname like '%B')
這顯然是垃圾,但是這樣的事情可能或我是愚蠢的?這個想法是,這將返回1行 - 比爾博巴金斯 - 因爲他的名字以'B'開頭,他在t_staticList表中。謝謝!
將您的預期輸出置於您的問題中,它將使您更容易解決 – Matt
並在其中放置所有表格 – Matt
只需做表之間的內連接。 –