我想在没有重复的表格上选择数据
例如
table1
data1; data2; data3; data4; data5
table2
data1; data2; data3
data1,data2,data3是相同的数据类型
表1
| data1 | data2 | data3 | data4 | data5 |
|----------|----------|----------|----------|----------|
| value1.1 | value2.1 | value3.1 | value4.1 | value5.1 |
表2
| data1 | data2 | data3 |
|----------|----------|----------|
| value1.1 | value2.1 | value3.1 |
| value1.2 | value2.2 | value3.2 |
| value1.3 | value2.3 | value3.3 |
我想从我的两个表中选择具有不同data1的data1,data2,data3
| data1 | data2 | data3 |
|----------|----------|----------|
| value1.1 | value2.1 | value3.1 |
| value1.2 | value2.2 | value3.2 |
| value1.3 | value2.3 | value3.3 |
我希望我的结果只有3列 例如,value1.1来自table1,value1.2来自table2
答案 0 :(得分:2)
简而言之,您需要以下内容:
SELECT data1, data2, data3
FROM table1
UNION /* Union without optional ALL will eliminate duplicates accross the two tables */
SELECT data1, data2, data3
FROM table2
但是,您仍需要澄清一些事项。你说:
我想从我的两个表中选择具有不同data1的data1,data2,data3
问题在于,如果两个表中存在重复的data1
,则不会说明会发生什么。
假设table1
的行的值为(1, A, B)
,而table2
的行的值为(1, X, Y)
。最终输出中应包含哪一行?
上述查询将包含这两行,因为它们的列不同:data2
和data3
。
编辑评论:
如果重复我想要table1结果
您仍然需要UNION
,但您需要控制要在联合中包含哪些行。注意:因为您的查询现在将确保没有重复项,所以您可以使用UNION ALL
,因此DMBS不会浪费处理时间来尝试消除不存在的重复项。
SELECT data1, data2, data3
FROM table1
UNION ALL
SELECT data1, data2, data3
FROM table2
WHERE NOT EXISTS (SELECT * FROM table1 WHERE table1.data1 = table2.data1)
答案 1 :(得分:0)
你可以试试这个。 UNION将为您提供DISTINCT结果:
SELECT data1, data2, data3 FROM table1
UNION
SELECT data1, data2, data3 FROM table2;