【发布时间】:2021-04-30 08:55:00
【问题描述】:
我想创建两个表的视图,合并它们,其中 table1 中的列!= table2 中的列,然后插入没有重复列的行。
CREATE TABLE IF NOT EXISTS test(Birds, Animals, Air, Earth);
INSERT INTO test VALUES("Crow", "Dog", "Oxygen", "Not Flat");
CREATE TABLE IF NOT EXISTS test1 (Birds, Animals, Air, Earth, Sky);
INSERT INTO test1 VALUES("Crow", "Dog", "Oxygen", "Not Flat", "Blue");
INSERT INTO test1 VALUES("Eagle", "Dog", "Oxygen", "Not Flat", "Blue");
CREATE VIEW view_name AS SELECT * FROM test, test1 WHERE test.Birds != test1.Birds'
测试表:
Birds|Animals|Air|Earth
Crow|Dog|Oxygen|Not Flat
test1 表:
Birds|Animals|Air|Earth|Sky
Crow|Dog|Oxygen|Not Flat|Blue
Eagle|Dog|Oxygen|Not Flat|Blue
当前输出:
Birds|Animals|Air|Earth|Birds:1|Animals:1|Air:1|Earth:1|Sky
Crow|Dog|Oxygen|Not Flat|Eagle|Dog|Oxygen|Not Flat|Blue
期望的输出:
Birds|Animals|Air|Earth|Sky
Eagle|Dog|Oxygen|Not Flat|Blue
【问题讨论】:
-
SELECT Birds, Animals, Air, Earth FROM test1 EXCEPT SELECT Birds, Animals, Air, Earth FROM test?不清楚您要匹配哪些列 -
错误:“鸟”附近:语法错误 |想匹配鸟类
-
抱歉已编辑。但注意到您想要
test中不存在的Sky列。所以试试SELECT Birds, Animals, Air, Earth, Sky FROM test1 WHERE EXISTS (SELECT test1.Birds, test1.Animals, test1.Air, test1.Earth EXCEPT SELECT test.Birds, test.Animals, test.Air, test.Earth FROM test) -
这个非常好用!我想我可以将其缩短为:SELECT * FROM test1 WHERE EXISTS (SELECT Birds EXCEPT SELECT Birds FROM test);
-
我看到它优先考虑 test1 表是吗?将使用来自 test1 的每一列。