两列的值相等吗? SQLite的

时间:2019-01-11 22:18:18

标签: sqlite

在同一个表的两列中(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之类的所有值

2 个答案:

答案 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