【发布时间】: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 0000 和 2222。以下是我尝试做的事情,但我认为我错了,因为我没有做任何事情来考虑 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 谢谢你的解决方案!