从表中选择具有ID的另一个表中的字段等于字符串的所有字段

时间:2015-06-14 15:44:26

标签: php mysql sql

我有两张桌子:

广告:字段IDABC

+----+---+-------+------+
| ID | A | B     | C    |
+----+---+-------+------+
|  1 | x | y     | z    |
|  2 | c | v     | b    |
|  3 | n | n     | m    |
+----+---+-------+------+

请求:字段IDAdIDStatus

+----+------+----------+
| ID | AdID |  Status  |
+----+------+----------+
|  3 |    1 | pending  |
|  4 |    2 | approved |
|  5 |    3 | pending  |
+----+------+----------+

ID(来自Ads)= AdID(来自Requests)。

现在,我希望从Ads获取所有记录,其中AdID' s(来自RequestsStatus等于pendingAdId此处 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')

这可能没有意义 - 请问我是否还没有解释好 - 我会尽可能多地帮助:)

2 个答案:

答案 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';