我試圖從我的第一個表中選擇一堆行取決於我的第二個表中的值。問題與一個IN內的SELECT語句
爲了實現這一點,我想出了以下查詢:
SELECT *
FROM table2 t2
WHERE t2.id IN(
SELECT subquery.id
FROM
(
SELECT id
FROM table1 t1
WHERE (t1.property=10 AND t1.value=0)
) AS subquery
INNER JOIN
(
SELECT id
FROM table1 t1
WHERE (t1.property=20 AND i.value=1)
) AS subquery2
on subquery.id=subquery2.id
)
從表1,ID的具體名單取決於財產和價值將被選定爲用作最終的條件選擇與表2。
子查詢本身正在工作,我測試了它,我可以檢索到好的id。
+------+
| id |
|------|
| 18 |
| 55 |
¦ ¦
問題是,所述IN不工作時,在最終的端SELECT我檢索從表2的代替的那些尊重具有相同ID爲一體的狀態的所有行先前檢索的子查詢。
+------+------+---
| id | name |
|------|------|---
| 1 | xx |
| 2 | yy |
¦ ¦ ¦
所以我的問題是:
- 爲什麼子查詢忽略了我的說法,是有辦法繞過這個問題?
編輯
這裏是一個SQLFiddle的要求,但奇怪的是,我張貼的代碼工作在這裏,但不是我的數據庫。
卡恩請你創建一個http://sqlfiddle.com/證明行爲 – Jens