【问题标题】:Find values with group count greater than 1查找组数大于 1 的值
【发布时间】:2021-09-02 13:14:46
【问题描述】:

我是使用 SQLite 的新手。我在一个表中有两列,示例如下所示

ID Colour
0000 Red
0000 Black
0000 Yellow
1111 None
2222 Red
2222 Yellow
3333 None
4444 None
5555 Red
6666 Black

从这里开始,我的 SELECT 语句应该只打印出超过 1 种颜色的 ID。

例如在这种情况下,只会打印出 ID 00002222。以下是我尝试做的事情,但我认为我错了,因为我没有做任何事情来考虑 None 值。

cur.execute('SELECT ID FROM table WHERE Colour > 1')
rows = cur.fetchall()
for row in rows:
   print(row)

【问题讨论】:

  • 请改成这样:SELECT id FROM your_table GROUP BY id HAVING COUNT(DISTINCT colour) > 1;
  • 这更像是一个 SQL 问题,而不是 Python 问题。看起来您需要 GROUP BY 并且 HAVING COUNT > 1。
  • 在你做任何事情之前你可能想看看你的架构。访问单个行的非唯一方法....意味着很多麻烦。
  • @Matthias 嗨,抱歉,我已经编辑了问题的标题。并且您的解决方案有效,谢谢!
  • @mechanical_meat 谢谢你的解决方案!

标签: python sql sqlite


【解决方案1】:

试试这个 -

select id from table group by id having count(distinct color) > 1

您可以搜索sql having clause了解更多信息。

这是一个这样的结果:

https://www.w3schools.com/sql/sql_having.asp

【讨论】:

  • 您好,这很有帮助,谢谢!对不起,我无法投票,因为我是 stackoverflow 的新手
猜你喜欢
  • 1970-01-01
  • 2011-12-10
  • 1970-01-01
  • 2012-08-14
  • 1970-01-01
  • 2019-07-28
相关资源
最近更新 更多