您需要将表连接到它本身,称为“自连接”。查询返回表的第一个实例中的所有数据,但只联接与第一个实例相反的第二个实例中的记录。因此,如果存在反向匹配,则所有联接列中都会有数据,如果没有反向匹配,则id、col1和col2将在联接列上返回空数据。然后,使用“if”语句在联接的数据上查找空值)。见以下代码:
SELECT
nt1.ID,
nt1.col1,
nt1.col2,
if(ID.col1 IS NULL, 'False', 'True') AS `Mark`
FROM
new_test AS nt1
LEFT OUTER JOIN
new_test AS nt2
ON
(
nt1.col1 = nt2.col2
AND
nt1.col2 = nt2.col1
)
WHERE
nt1.col1 = 115;
请注意,我们将col1与join中的col2进行匹配,这将使您得到相反的数字。
用于设置测试的代码:
DROP TABLE IF EXISTS new_test;
CREATE TABLE IF NOT EXISTS new_test (
id int not null,
col1 int,
col2 int
);
INSERT INTO new_test (ID, col1, col2)
VALUES
(1,115,3),
(2,3,115),
(3,110,121),
(4,12,115),
(5,115,121),
(6,115,65);