Mysql选择不在where子句中的具有相同表的行

Mysql选择不在where子句中的具有相同表的行,mysql,Mysql,我有两张这样的桌子: 表1 +----+-----------+--------------------+ | ID | Postcode4 | woonplaats | +----+-----------+--------------------+ | 1 | 9044 | Beetgum | | 2 | 9045 | Beetgummermole | | 3 | 1028 | Amsterdam

我有两张这样的桌子:

表1

+----+-----------+--------------------+ | ID | Postcode4 | woonplaats | +----+-----------+--------------------+ | 1 | 9044 | Beetgum | | 2 | 9045 | Beetgummermole | | 3 | 1028 | Amsterdam | | 4 | 1029 | Amsterdam | | 5 | 1030 | Amsterdam | +----+-----------+--------------------+ +----+-----------+--------------------+ |ID |邮政编码4 | Woonpaats| +----+-----------+--------------------+ |1 | 9044 |甜菜胶| |2 | 9045 |甜菜糖浆| |3 | 1028 |阿姆斯特丹| |4 | 1029 |阿姆斯特丹| |5 | 1030 |阿姆斯特丹| +----+-----------+--------------------+ 表2

+----+------+-------+ | ID | 4PP | Regio | +----+------+-------+ | 1 | 9044 | 2 | | 2 | 9045 | 2 | | 3 | 1028 | 4 | | 4 | 1029 | 4 | | 5 | 1030 | 4 | +----+------+-------+ +----+------+-------+ |ID | 4PP |区域| +----+------+-------+ | 1 | 9044 | 2 | | 2 | 9045 | 2 | | 3 | 1028 | 4 | | 4 | 1029 | 4 | | 5 | 1030 | 4 | +----+------+-------+ 我首先要选择区域,在这里是区域2。那么我希望表2中的所有其他4PP具有相同的区域(2)。因此,查询的结果必须是90449045,这样就可以了

select 4PP from table2 where Regio in (select Regio from table2 where 4PP in (select PostCode4 from table1 where woonplaats = "Beetgum"))
这应该可以

select 4PP from table2 where Regio in (select Regio from table2 where 4PP in (select PostCode4 from table1 where woonplaats = "Beetgum"))

这是一个非常糟糕的查询,直到有人给你一个奇特的连接查询(你应该使用)


这是一个非常糟糕的查询,直到有人给你一个奇特的连接查询(你应该使用)

这里有一个连接的:)

小提琴:

这里有一个连音:)


小提琴:

似乎这就是你要找的:

SELECT GROUP_CONCAT(Table3.4PP) 4PP FROM Table1
INNER JOIN Table2 ON(Table1.PostCode4 = Table2.4PP) 
INNER JOIN Table2 AS Table3 ON(Table2.Regio = Table3.Regio) 
WHERE woonplaats = 'Beetgum';

看来这就是你要找的:

SELECT GROUP_CONCAT(Table3.4PP) 4PP FROM Table1
INNER JOIN Table2 ON(Table1.PostCode4 = Table2.4PP) 
INNER JOIN Table2 AS Table3 ON(Table2.Regio = Table3.Regio) 
WHERE woonplaats = 'Beetgum';

是的!但不是很快。。。几乎是1秒的查询。索引的最佳位置在哪里?Woonpaats或4PP?sqlfiddle。这是我今天最喜欢的帖子。“我没听说过这件事。”米凯克。最好的是,你可以粘贴漂亮的ascii艺术表格,得到一个DDL@汉克:太棒了……我不知道你能做到。太棒了!在woonplaats(VARCHAR)上建立索引,查询运行时间为00011秒,而不是0912秒!但不是很快。。。几乎是1秒的查询。索引的最佳位置在哪里?Woonpaats或4PP?sqlfiddle。这是我今天最喜欢的帖子。“我没听说过这件事。”米凯克。最好的是,你可以粘贴漂亮的ascii艺术表格,得到一个DDL@汉克:太棒了……我不知道你能做到。太棒了!woonplaats(VARCHAR)上的索引,查询运行时间为00011秒,而不是0912秒