我坐了几个小时试图解决特定问题,但我无法解决。最后,我决定把它贴在这里。这里有一些记录,
╔════════╦════════════╦═════════╦══════════════════╗
║ AUTOID ║ PERSONNAME ║ FLOWER ║ Other columns... ║
╠════════╬════════════╬═════════╬══════════════════╣
║ 1 ║ Alex ║ Rose ║ ║
║ 2 ║ Rene ║ Rose ║ ║
║ 3 ║ Rene ║ Jasmin ║ ║
║ 4 ║ Darwin ║ Rose ║ ║
║ 5 ║ Alex ║ Rose ║ ║
║ 6 ║ Darwin ║ Jasmin ║ ║
║ 7 ║ Alex ║ Rose ║ ║
║ 8 ║ Rene ║ Jasmin ║ ║
║ 9 ║ Hello ║ World ║ ║
║ 10 ║ Hello ║ World ║ ║
╚════════╩════════════╩═════════╩══════════════════╝
我怎样才能得到这个结果, 在他/她的所有记录中只有一种花的人 。
╔════════════╦════════════╗
║ PERSONNAME ║ FLOWERNAME ║
╠════════════╬════════════╣
║ Alex ║ Rose ║
║ Hello ║ World ║
╚════════════╩════════════╝
我尝试过的最好的一个是下面的这个查询,但仍然无法正常工作。
SELECT DISTINCT t1.PersonName, t1.Flower
FROM TableName t1
INNER JOIN
(
SELECT personname, COUNT(DISTINCT flower) totals
FROM tableName
GROUP BY personname, Flower
) t2 ON t1.personname = t2.personname and
t2.totals = 1
任何想法?
最佳答案
您可以在此问题上使用 GROUP BY
子句、HAVING
子句和 COUNT()
,无需加入子查询
SELECT PersonName, MAX(Flower) flowerName
FROM TableName
GROUP BY PersonName
HAVING COUNT(DISTINCT Flower) = 1
关于mysql - 获取一种且只有一种类型的记录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14651761/