我有两个飞行数据表(delta
和 aa
),我正在尝试创建一个新表,它是 delta< 的子集
。此子集仅包含 delta 中与 aa
中共享相同 origin_airport_id
和 dest_airport_id
的行。
aa
有 89,940 行,delta
有 245,052 行。
我用过:
CREATE TABLE dl_share
AS
SELECT delta.*
FROM delta,aa
WHERE (aa.origin_airport_id = delta.origin_airport_id
AND aa.dest_airport_id = delta.dest_airport_id)
它创建了一个包含 18,562,876 行的表。为什么表格的尺寸更大而不是更小,我该如何正确地做到这一点?
最佳答案
您应该使用 WHERE EXISTS
而不是 JOIN
:
SELECT *
FROM delta d
WHERE EXISTS (
SELECT 1
FROM aa
WHERE aa.origin_airport_id = d.origin_airport_id
AND aa.dest_airport_id = d.dest_airport_id);
关于sql - 如何创建表的子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34004282/