Выбор строк, где есть как минимум X строк с некоторыми значениями в столбце через sqlite3? - PullRequest
0 голосов
/ 20 октября 2010

Скажите, у меня есть следующие данные:

|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?

Ответы [ 2 ]

2 голосов
/ 20 октября 2010

В этом примере будут получены все книги, содержащие 3 или более строк.

  SELECT * FROM Books WHERE BookID IN
     (SELECT BookID FROM Books GROUP BY BookID HAVING COUNT(*) >= 3)
0 голосов
/ 20 октября 2010

Вот способ сделать это, присоединившись к подзапросу:

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

Ответ Ларри Люстига гораздо менее многословен (и, вероятно, также быстрее).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...