之间的公共领域我有如下表: 表1(P,CRC,RTI,L1) 表2(P,CRC,RTI)如何LEFT JOIN和删除两个表
我想找到的所有记录从p和CRC与表2相同的值表1,但删除这些记录与p和CRC相同的值在两个表 为器R不同的值我试图
Select * FROM table1 t1
LEFT JOIN table2 t2
ON t1.p = t2.p and t1.crc = t2.crc
但不知道如何删除常见记录
之间的公共领域我有如下表: 表1(P,CRC,RTI,L1) 表2(P,CRC,RTI)如何LEFT JOIN和删除两个表
我想找到的所有记录从p和CRC与表2相同的值表1,但删除这些记录与p和CRC相同的值在两个表 为器R不同的值我试图
Select * FROM table1 t1
LEFT JOIN table2 t2
ON t1.p = t2.p and t1.crc = t2.crc
但不知道如何删除常见记录
我不知道我完全理解你的问题。假设你有这样的表中记录: 表1:
表2:
如果你想显示的所有记录表1其中table1.rti不等于table2.rti,然后尝试下面的内容。这会给你表1行1(上面)。
SELECT t1.*
FROM table1 t1 LEFT JOIN table2 t2 on
t1.p = t2.p AND t1.crc = t2.crc
WHERE
t1.rti <> t2.rti
根据您的评论下面,也许尝试MINUS运营商。
SELECT * FROM table1
MINUS
SELECT t1.*
FROM table1 t1 LEFT JOIN table2 t2 on
t1.p = t2.p AND t1.crc = t2.crc
感谢您的回复, – Verver
感谢您的回复,我的问题是,如果我在表格1中有值(1,23,6,8),(1,33,6,7)和值(1,23,1)和(1,40,1)在table2中,我希望我查询返回从表1中的(1,33,6,8),并不返回(1,23,6,8)从表1,因为有值(1,23 ,1)其中t1.p = t2.p和t1.crc = t2.crc – Verver
这是一个正确的方法吗? SELECT * from table1 LEFT JOIN table2 ON t1.p = t2.p and t1.crc = t2.crc WHERE t2。rti IS NULL – Verver
列出实际需要的列可能会更好。但是,如果你想只列是连接键,那么你可以使用USING
:
SELECT *
FROM table1 t1 LEFT JOIN
table2 t2
USING (p, crc);
看来,如果你想从table1
,其中table2
包含相同p
和相同crc
但不同rti
至少一个记录排除的所有记录。 这可写为“获取来自表1的所有记录,其中没有记录具有相同的p
和相同的crc
但在table2
中存在不同的rti
”。
select * from table1 t1
where not exists (
select * from table2 t2
where t1.p = t2.p and
t1.crc = t2.crc and
t1.rti <> t2.rti)
希望我对你有帮助。
你的标题说“删除共同的字段”,你的问题说“删除常见的记录”。这是什么? –