【发布时间】:2015-11-04 04:49:30
【问题描述】:
我想在表中找到不同的名称对,它们在项目列中具有相同的确切项目。例如:
CREATE TABLE t
(
name VARCHAR(255),
item VARCHAR(255)
);
INSERT INTO t VALUES("Alice", "Orange");
INSERT INTO t VALUES("Alice", "Pear");
INSERT INTO t VALUES("Alice", "Lemon");
INSERT INTO t VALUES("Bob", "Orange");
INSERT INTO t VALUES("Bob", "Pear");
INSERT INTO t VALUES("Bob", "Lemon");
INSERT INTO t VALUES("Charlie", "Pear");
INSERT INTO t VALUES("Charlie", "Lemon");
这里的答案是Alice,Bob,因为他们拿的东西完全相同。
我只想用双重否定(使用 NOT EXISTS/NOT IN)来做这件事,我认为这更适合这个问题,但我想不出任何离功能很近的东西。
这有点类似于this question 但我使用的是 SQLite,所以我不能使用 GROUP_CONCAT() 但我想知道如何使用 NOT EXISTS/NOT IN 的关系除法来完成.
【问题讨论】:
-
我给你做了一个 SQLFiddle 来玩~sqlfiddle.com/#!5/b70cd
-
你的桌子上有多少种不同的物品?
-
@TimBiegeleisen 随心所欲。我认为它不会影响任何事情,只要它仍然可以返回包含完全相同的项目集的对。
-
SQLite 确实有 group_concat...sqlite.org/lang_aggfunc.html
-
@Captain 好吧我的错,但我真的很想在不使用组连接的情况下获得一些解决它的提示......
标签: sqlite relational-division