我有两张桌子:
广告:字段ID
,A
,B
和C
:
+----+---+-------+------+
| ID | A | B | C |
+----+---+-------+------+
| 1 | x | y | z |
| 2 | c | v | b |
| 3 | n | n | m |
+----+---+-------+------+
请求:字段ID
,AdID
和Status
:
+----+------+----------+
| ID | AdID | Status |
+----+------+----------+
| 3 | 1 | pending |
| 4 | 2 | approved |
| 5 | 3 | pending |
+----+------+----------+
ID
(来自Ads
)= AdID
(来自Requests
)。
现在,我希望从Ads
获取所有记录,其中AdID
' s(来自Requests
)Status
等于pending
。 AdId
此处 ID
的值Ads
。
因此,使用上面的表格,我得到的结果将是广告中的ID 1和3:
+----+---+---+---+
| ID | A | B | C |
+----+---+---+---+
| 1 | x | y | z |
| 3 | n | n | m |
+----+---+---+---+
这是我到目前为止最接近的,但这显然不起作用,因为它只能选择一行 - 而我需要选择多行:
SELECT * FROM Ads WHERE ID = (SELECT AdID FROM Requests WHERE Status = 'pending')
这可能没有意义 - 请问我是否还没有解释好 - 我会尽可能多地帮助:)
答案 0 :(得分:4)
使用IN
代替=
:
SELECT *
FROM Ads
WHERE ID IN (SELECT AdID FROM Requests WHERE Status = 'pending')
答案 1 :(得分:0)
试试这个:
SELECT * FROM Ads A LEFT JOIN Requests R ON A.ID=R.AdID WHERE R.AdID='pending';