2015-09-06 57 views
0

我有一個表,讓我們說,它有顏色在一個領域和形狀的其他,但沒有特定的字段順序:查找無倒數記錄記錄在MySQL表

FIELD1 | FIELD2 
---------|---------- 
Red  | Triangle 
Red  | Square 
Red  | Circle 
Triangle | Red 
Square | Red 

我想找到記載,沒有互惠記錄並創建一個。因此,在上表中沒有爲倒數

Red | Circle 

,同時也有對

Red | Triangle 
Red | Square 

是否有將 a)確定哪些記錄沒有倒數 2查詢)創建者記錄?

回答

1

你可以做到以下幾點:

SELECT a.FIELD2, a.FIELD1 FROM tbl a 
LEFT JOIN tbl b ON b.FIELD2=a.FIELD1 AND b.FIELD1=a.FIELD2 
WHERE b.FIELD1 is NULL 

看到這裏的工作示例:SQLfiddle1

SELECT通過尋找互惠記錄加入到表本身。如果該記錄是未找到那麼原始表格的記錄列出的順序顛倒。

創建缺失的記錄可以通過輸出在INSERT聲明,如:

INSERT INTO tbl (FIELD1,FIELD2) 
SELECT a.FIELD2, a.FIELD1 FROM tbl a 
LEFT JOIN tbl b ON b.FIELD2=a.FIELD1 AND b.FIELD1=a.FIELD2 
WHERE b.FIELD1 is NULL 

演示完整的示例SQLfiddle2的。

+0

謝謝我正在測試,現在(我的是一個大表),但這似乎可行的更新查詢肯定。僅供參考我的另一個想法,因爲實際上這兩個字段是5位數的整數,我想通過乘以每個A和B字段創建一個'Product'字段(例如92451 | 90451創建一個Product字段8362285401),然後我可以只計數*)那裏是1 – user3649739