SQL查询-返回表A中与表B中任何行匹配的行
我正在尝试编写一个查询,它使用从第一个查询中获得的唯一位置列表作为从第二个表中查询行的条件 例如:SQL查询-返回表A中与表B中任何行匹配的行,sql,Sql,我正在尝试编写一个查询,它使用从第一个查询中获得的唯一位置列表作为从第二个表中查询行的条件 例如: SELECT TABLE_A."LOCATION", MIN(TABLE_A.WORKDATE) AS MIN_WORK_DATE FROM DB.TABLE_A WHERE MIN_WORK_DATE > '201201' 然后不知何故: SELECT TABLE_B."LOCATION", (other fields of interest) FROM DB.TABLE_
SELECT
TABLE_A."LOCATION",
MIN(TABLE_A.WORKDATE) AS MIN_WORK_DATE
FROM
DB.TABLE_A
WHERE
MIN_WORK_DATE > '201201'
然后不知何故:
SELECT
TABLE_B."LOCATION",
(other fields of interest)
FROM
DB.TABLE_B
WHERE
TABLE_B."LOCATION" (is contained in the result above)
提前感谢您的帮助 您可以将任何表的列与任何其他表的列相匹配: 例:
您可以使用“加入”来完成此操作:
SELECT
b.location,
(other fields of interest)
FROM
tableB b
JOIN
(SELECT a.location, min(a.workdate) as min_workdate
FROM tableA a
GROUP BY a.location) c
ON b.location = c.location
WHERE c.min_workdate > '201201'
将第一个查询与操作中的
一起用作子查询您的第一个查询毫无意义。您有一个聚合函数MIN()
,但没有分组依据
@Gone-除了OP可能还需要MIN\u工作日期
。对第一个查询的结果执行联接
可能会更好。第一个查询将始终返回一条记录。这是故意的吗?是的,我的第一个查询事实上比我上面写的示例更复杂,完整的查询包括GROUP BY和更多WHERE条件,以及两个连接。感谢mareck,我不敢相信我在连接如此明显的情况下已经挂断了几天了!需要休息一下…嗯,看起来很有趣。由于我简化了复杂的位,它不能用于我实际的第一个查询,但也必须尝试这种方法。谢谢
SELECT
b.location,
(other fields of interest)
FROM
tableB b
JOIN
(SELECT a.location, min(a.workdate) as min_workdate
FROM tableA a
GROUP BY a.location) c
ON b.location = c.location
WHERE c.min_workdate > '201201'