选择联合:
select * from table1
union
select * from table1_backup
选择交叉点的查询是什么?
答案 0 :(得分:9)
在SQL Server intersect
中select * from table1 intersect select * from table1_backup
答案 1 :(得分:6)
SELECT *
FROM table1
WHERE EXISTS
(SELECT *
FROM table1_backup
WHERE table1.pk = table1_backup.pk)
作品
答案 2 :(得分:2)
对于这样的问题,我倾向于回到这个视觉资源:
答案 3 :(得分:1)
内部联接我认为: 假设T1和T2具有相同的结构:
从中选择T1。* T1内部连接T2在T1.pkField = T2.pkField
上答案 4 :(得分:1)
“intersect”也是标准SQL的一部分。
内部联接给出了不同的答案。
答案 5 :(得分:1)
这是mySQL的解决方案:
CREATE TABLE table1(
id INT(10),
fk_id INT(10),
PRIMARY KEY (id, fk_id),
FOREIGN KEY table1(id) REFERENCES another_table(id),
FOREIGN KEY table1(fk_id) REFERENCES other_table(id)
);
SELECT table1.* FROM table1 as t0
INNER JOIN table1 as a ON (t0.id = a.id and fk_id=1)
INNER JOIN table1 as b ON (t0.id = b.id and fk_id=2)
INNER JOIN table1 as c ON (t0.id = c.id and fk_id=3)
ORDER BY table1.id;
基本上你有一个数学子集表(即1 = {1,2,3},2 = {3,4,2},...,n = {1,4,7})属性id,它是集合号,和fk_ id,它引用元素表的PRIMARY KEY,超集(表示花括号中数字的可能值)。对于那些没有数学倾向的人,让我们假装你有一个表,'other_ table',这是一个项目列表,另一个表是'another_ table',它是一个交易号列表,而且这两个表形成了一个多表 - 很多关系,因此产生'table1'。现在让我们假装你想知道'another_ table'中的id,它包含第1,2和3项。这就是查询。
答案 6 :(得分:0)
两个相同的表a和b的交叉可以这种方式完成:
SELECT a.id, a.name
FROM a INNER JOIN b
USING (id, name)
答案 7 :(得分:-1)
子查询?真的?
获取table1和table2的交集:
SELECT * FROM table1, table2 WHERE table1.pk=table2.pk;
答案 8 :(得分:-4)
select distinct * from (select * from table1 union select * from table1_backup)