我有一张表让我们说它在一个字段中有Color而在另一个字段中有Shape但是没有特定的字段顺序:
FIELD1 | FIELD2
---------|----------
Red | Triangle
Red | Square
Red | Circle
Triangle | Red
Square | Red
我正在尝试查找没有倒数记录并创建一个记录的记录。所以在上表中没有对应的
Red | Circle
虽然有
Red | Triangle
Red | Square
是否有查询 a)确定哪些记录没有倒数 2)创建这些记录?
答案 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。