之間的公共領域我有如下表: 表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)
希望我對你有幫助。
你的標題說「刪除共同的字段」,你的問題說「刪除常見的記錄」。這是什麼? –