【发布时间】:2016-05-10 12:55:05
【问题描述】:
我的目标是从外键值与另一个表的子查询返回的 ID 匹配的表中获取所有记录。
我尝试了几种组合,但它们甚至都无法编译。
为了澄清,请考虑以下查询:
SELECT *
FROM `news`
WHERE IDFIRM IN (SELECT ID FROM firm WHERE Block=0)
AND Actual=1
这是一个简单的查询,但除了这个子查询中的ID,我还需要检索其他列并返回它们作为响应。
类似这样的东西(但当然这是行不通的):
SELECT news.*, sub.name
FROM `news`,
(SELECT * FROM firm WHERE Block=0) AS sub
WHERE news.IDFIRM IN (SELECT sub.ID FROM sub)
AND news.Actual=1
我知道如何使用连接来实现这一点,但问题是可以有多个 IN 语句(来自不同的表),如下所示:
SELECT *
FROM `news`
WHERE IDFIRM IN (SELECT ID FROM firm WHERE Block=0)
AND Actual=1
AND id_publisher IN (SELECT ID FROM publisher WHERE Block=0)
因此,根据请求的不同,此查询可能会变得非常不同。
如何创建最有效的查询来解决此任务?或者只有多个查询才有可能?
谢谢。
【问题讨论】:
-
表格?列?我们只能想象有多少组合。如果您需要帮助,请说得更具体。
标签: php mysql sql database join