表-
TestID | IntegID
=======|======
P1 | In1
P2 | In2
P2 | In2
P3 | In3
P1 | In5
P1 | In5
P2 | In2
P3 | In3
P2 | In9
所需输出:
TestID | IntegID
=======|======
P1 | In1
P1 | In5
P2 | In2
P2 | In9
所以基本上我只想在列1和列2之间存在一对多关系时提取行。
像p3在第2列中只有一个对应的值,所以不应该提取它。但是,由于p1和p2在第2列中有多个值,因此提取了相关的行。
你能不能帮我在mysql里查询一下,把上面的输出提取出来。
2条答案
按热度按时间9udxz4iz1#
可以在join中使用count(distinct integid)的子查询
pes8fvy92#
您可以将表连接到自身以获得不同的结果
IntegID
列,然后使用DISTINCT
要删除重复行,请执行以下操作:我认为上述方法可能是最简单的,将给你最好的性能,但我喜欢斯凯里奇的答案上面使用
COUNT(DISTINCT...
所以这里还有另一种方法IN
只选择TestID
您需要的行:有时,尝试一些方法,看看哪些方法最适合索引和应用程序的其他方面,这是很好的。干杯。