0

我有一张表,假设它在一个字段中有颜色,在另一个字段中有形状,但没有特定的字段顺序:

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

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

Red | Circle

虽然有

Red | Triangle
Red | Square

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

4

1 回答 1

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的演示。

于 2015-09-06T14:18:29.673 回答