我有一张桌子:
[myTable]
ID
Name
HairColor
NumberOfPairsOfPants
我可以轻松地获取HairColor列表
SELECT DISTINCT HairColor FROM myTable
但我想要完整的内容是头发颜色不同的记录(是的,数据库表是非规范化/冗余的,所以我没有得到逻辑错误)
伪代码
SELECT DISTINCT HairColor,* FROM myTable
语法帮助!
答案 0 :(得分:1)
好的,首先,SELECT DISTINCT haircolor FROM myTable
并没有给你"发色是不同的。"它为您提供所有独特的头发颜色。有点像"房间里名字不同。"如果有两个人名为Sally,SELECT DISTINCT name
会为Sally提供一行。你要找的东西有点不同。
你要做的是,首先,确定哪些头发颜色是不同的,即哪一种只发生一次。为此你需要
SELECT haircolor, COUNT(*) AS cnt FROM myTable GROUP BY haircolor HAVING cnt > 1;
完成上述操作后,您需要将这些结果与原始表格相关联,以获得与这些发色相关联的整行,例如
SELECT a.* FROM myTable AS a
INNER JOIN
(SELECT SELECT haircolor, COUNT(*) AS cnt FROM myTable GROUP BY haircolor HAVING cnt > 1) AS b
ON a.haircolor = b.haircolor