2015-09-06 22 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