在mysql表中查找没有倒数记录的记录

时间:2015-09-06 13:58:29

标签: mysql no-duplicates

我有一张表让我们说它在一个字段中有Color而在另一个字段中有Shape但是没有特定的字段顺序:

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

我正在尝试查找没有倒数记录并创建一个记录的记录。所以在上表中没有对应的

Red | Circle

虽然有

Red | Triangle
Red | Square

是否有查询 a)确定哪些记录没有倒数 2)创建这些记录?

1 个答案:

答案 0 :(得分: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