gpt4 book ai didi

sqlite - sqlite选择所有行,其中某些列在一组可能的值中

转载 作者:行者123 更新时间:2023-12-03 17:53:13 25 4
gpt4 key购买 nike

col0 col1 col2 A B C
0 0 1 1 2 3
0 1 1 1 2 3
0 0 1 1 2 3
0 2 0 1 2 3
0 1 1 1 2 3


您好,我有一个表,其中一些列是col0,col1,col2。首先,我想找到满足某种条件的每种组合。为了简单起见,让我们查找数据库中不止一次的每个三元组(在我更复杂的实际情况下需要按分组并具有):

SELECT col0,col1,col2 FROM table GROUP BY col0,col1,col2 HAVING COUNT(*) > 1


给我类似的东西:

col0 col1 col2
0 0 1
0 1 1


现在,我想选择(实际上删除)所有包含那些col0,col1,col2组合之一的行。

所以像这样:

SELECT * FROM table WHERE (col0,col1,col2) IN (...select above...)


但这给了我一个错误,我猜SQLite中的WHERE子句只允许使用一列。因此,可能必须使用某种连接,但是我在使用正确的语法和连接类型时遇到了困难。如何进行?谢谢。

最佳答案

选择具有特定值组合的行的最简单方法是使用联接:

SELECT MyTable.*
FROM MyTable
JOIN (SELECT col0, col1, col2
FROM MyTable
GROUP BY col0, col1, col2
HAVING COUNT(*) > 1)
USING (col1, col2, col3)


联接不适用于DELETE,因此您必须在单独的步骤中使用主键(或候选主键):

DELETE FROM MyTable
WHERE rowid IN (SELECT MyTable.rowid
FROM MyTable
JOIN (SELECT col0, col1, col2
FROM MyTable
GROUP BY col0, col1, col2
HAVING COUNT(*) > 1)
USING (col1, col2, col3))

关于sqlite - sqlite选择所有行,其中某些列在一组可能的值中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28432507/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com