通过sqlite3选择列中至少有X行具有某些值的行?
假设我有以下数据:通过sqlite3选择列中至少有X行具有某些值的行?,sqlite,Sqlite,假设我有以下数据: |bookID|data| |1|a| |1|b| |1|c| |2|x| |2|y| |3|t| 我想选择至少有X行的所有书籍。所以如果X=3,那么我只能得到bookID=1的所有行。如果X=2,那么我只能得到bookID=1或bookID=2的所有行,以此类推 我可以用SQLite3实现这一点吗?此示例将获得所有具有3行或更多行的书籍 SELECT * FROM Books WHERE BookID IN (SELECT BookID FROM Books
|bookID|data|
|1|a|
|1|b|
|1|c|
|2|x|
|2|y|
|3|t|
我想选择至少有X行的所有书籍。所以如果X=3,那么我只能得到bookID=1的所有行。如果X=2,那么我只能得到bookID=1或bookID=2的所有行,以此类推
我可以用SQLite3实现这一点吗?此示例将获得所有具有3行或更多行的书籍
SELECT * FROM Books WHERE BookID IN
(SELECT BookID FROM Books GROUP BY BookID HAVING COUNT(*) >= 3)
下面是一种通过加入子查询来实现的方法:
SELECT bookID FROM books
JOIN (SELECT COUNT(*) AS book_count,bookID FROM books GROUP BY bookID)
USING (bookID)
WHERE book_count >= 2
GROUP BY bookID
更不冗长(可能也更快)。我在这台计算机上没有SQLite来测试它,但它应该可以工作。你看到了什么结果?1,a(新行)1,b(新行)1,c(新行)--维尔德,呃!我希望我能把两个答案都标为正确。拉里·卢斯蒂格的作品无疑是有效的,然而,它仅限于有一个索引。这个解决方案允许你有多个索引,我最后不得不用这个来解决另一个类似的问题。