在同一个表的两列中(idParent1和idParent2),我想知道在任何行中(不仅是同一行)是否存在两个相等的id。如果在任何行中都有相等的值,我想获取这些ID。
我尝试不成功。
SELECT idParent1
FROM
Person
WHERE
Person.idParent1 IN Person.idParent2;
我遇到了错误:没有这样的表:Person.idParent2
示例:
sqlite> CREATE TABLE Person(
ID INT PRIMARY KEY NOT NULL,
Parent1 INT NOT NULL,
Parent2 INT NOT NULL,
);
INSERT INTO Person (ID,Parent1,Parent2)
VALUES (1, 2,3);
INSERT INTO Person (ID,Parent1,Parent2)
VALUES (2, 5,6);
INSERT INTO Person (ID,Parent1,Parent2)
VALUES (3, 7,5);
INSERT INTO Person (ID,Parent1,Parent2)
VALUES (9, 10,12);
INSERT INTO Person (ID,Parent1,Parent2)
VALUES (45, 2,3);
在此示例中,Parent1和Parent2中共有5个。我想确定两列中都存在5之类的所有值
答案 0 :(得分:1)
您的语法不正确。正确的语法是:
SELECT idParent1 FROM Person WHERE idParent1 IN (SELECT idParent2 FROM Person)
答案 1 :(得分:1)
如果您只想检查idParent1
:
SELECT idParent1
FROM
Person
WHERE
Person.idParent1 IN (
SELECT
idParent2
FROM
Person
);
或
SELECT idParent1
FROM
Person AS p
WHERE EXISTS (SELECT 1 FROM Person WHERE Person.idParent2 = p.idParent1);
类似的解决方案可以应用于idParent2
。