mysql - 获取一种且只有一种类型的记录

标签 mysql sql select

我坐了几个小时试图解决特定问题,但我无法解决。最后,我决定把它贴在这里。这里有一些记录,

╔════════╦════════════╦═════════╦══════════════════╗
║ 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/

相关文章:

mysql - MySQL中少于X个字符的查询结果

mysql - SQL - 计算给定时期的平均汇率并在选择中使用

php - Laravel groupBy 列并根据数量列添加总计

mysql - 将 mysql 转储文本文件恢复到数据库

php - 样式化动态内容

sql - NOT EXISTS with NULLs 与其他运算符不一致

mysql - 总结 MySQL 中的前 5 个值

mysql - 恢复 MySQL 表(MyISAM 和 InnoDB)所需的最小文件集

mysql - 批处理文件 CD,然后运行 ​​MySQL 查询

SQL Server 输出 : How should i proceed to get this output in Table?