我有 2 个表:
广告:字段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
的(从Requests
)Status
等于pending
。 AdId
这里是Ads
ID
的值。
因此,使用上表,我得到的结果将是来自广告的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')
这可能没有意义 - 如果我没有解释好,请问 - 我会尽可能多地提供帮助:)
使用 IN
代替 =
:
SELECT *
FROM Ads
WHERE ID IN (SELECT AdID FROM Requests WHERE Status = 'pending')
试试这个:
SELECT * FROM Ads A LEFT JOIN Requests R ON A.ID=R.AdID WHERE R.AdID='pending';