我有2个表格 - rout
和loc
。
表格Rout列:
Id (PK)
file_key
rout_no
....
此表有800k记录
表格列
catalog_no(PK)
country_id
...
此表有700k记录。所以我想要这样的东西(两张桌子之间的交点)
SELECT rout.file_key,rout.rout_no,loc.country_id
FROM ROUT_TBL rout, LOC_TBL loc
WHERE rout.file_key != loc.catalog_no
你能告诉我怎么样?
答案 0 :(得分:3)
我不确定我理解你在问什么。 “交集”是一个数学术语,表示您要确定两个表中存在哪些值。但是您发布的查询似乎正在查找完全相反的情况 - 一个表中的行集在另一个表中不存在。
如果你真的是指交叉点
SELECT rout.file_key,
rout.rout_no,
loc.country_id
FROM rout_tbl rout
JOIN loc_tbl loc ON (rout.file_key = loc.catalog_no)
如果您希望ROUT
中LOC
SELECT rout.file_key,
rout.rout_no
FROM rout_tbl rout
WHERE NOT EXISTS( SELECT 1
FROM loc_tbl loc
WHERE loc.catalog_no = rout.file_key )
中的所有行
ROUT
如果您希望来自LOC
的数据以及来自SELECT rout.file_key,
rout.rout_no,
loc.country_id
FROM rout_tbl rout
LEFT OUTER JOIN loc_tbl loc ON (rout.file_key = loc.catalog_no)
的数据(如果存在)
{{1}}