SQLite Как случайным образом выбрать минимальные значения для всех случаев? - PullRequest
0 голосов
/ 26 июня 2018

Я хочу случайным образом выбрать строку из таблицы, где в столбце Number может существовать несколько минимальных значений.Например, у меня есть таблица, содержащая заголовки, числа и категории, например:

Ti Nu Ca

A 0 c7

W 0 c7

Y 0c7

C 0 c9

H 3 c9

Этот запрос вернет случайную строку, где Number равно 0, а Ca равно c7: SELECT * FROM Table WHERE ((Ca ='c7') And Nu = (ВЫБЕРИТЕ min (Nu) ИЗ таблицы)) ЗАКАЗАТЬ ПО СЛУЧАЙНОМУ () LIMIT 1;

Но когда таблица содержит:

Ti Nu Ca

A 3 c7

W 1 c7

Y 5 c7

C 0 c9

H 3 c9

Приведенный выше запросничего не возвращает.Я ожидаю, что строка "W 1 c7" будет возвращена.Что я делаю не так?

1 Ответ

0 голосов
/ 26 июня 2018

Ваш подзапрос выглядит так, как будто он всегда соответствует Nu = 0, независимо от того, каким был Ti, и, поскольку нет строки, в которой Nu = 0 и Ca = "c7", он ничего не возвращает.Вам, вероятно, понадобится что-то вроде этого:

SELECT * FROM [Table] x
WHERE Ca = 'c7' And Nu = (SELECT min(Nu) FROM [Table] where x.Ca = Ca)
ORDER BY RANDOM() LIMIT 1;

Если вы добавите еще одну строку, содержащую Ti = "Z", Nu = 1, Ca = "c7", то вы должны увидеть, как значение Ti переворачивается между "W""и" Z "в возвращенном ряду.

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