Я не понимаю логику запроса 3, как показано ниже, и надеюсь, что кто-то может дать мне некоторую идею. Для запроса 3, SELECT, ID, имя, возраст, зарплату от компании, где возрастная> (SELECT Возраст от компании, где ЗАРПЛАТА < 20000);Логика предложения WHERE вместе с> оператором и подзапросом
Суб-запрос будет узнать результат, где зарплата < 20000 первых, и это то, что QUERY2, как показано ниже. И тогда родительский запрос узнает результат, в котором используется вся запись возраста из таблицы КОМПАНИИ (всего 7 записей: 18,19,22,23,24,29,37) для сравнения с результатом возраста от подзапроса (всего 4 записи: 18,19,23,29), а затем показывают большую запись по возрасту.
Я ожидаю, что результат должен показать только идентификатор 7 только как ниже, так как только эта запись выполняется условие. Чем больше возраст от результата подзапроса (запрос 2) является 29, так что только эта запись возраст составляет более 29.
ID NAME AGE SALARY
7 Vicky 37 32500.0
К сожалению, мои ожидания не соблюдено, и показать мне результат как запрос 3, как показано ниже.
Надеюсь понять логику, как ее работа для запроса 3, и надеюсь, что кто-то может помочь.
1.sqlite> SELECT ID, имя, возраст, ЗАРПЛАТА от компании;
ID NAME AGE SALARY
1 John 24 21000.0
2 Davy 22 20000.0
3 Kenny 19 9700.0
4 Henry 23 13555.0
5 Sam 18 17000.0
6 Ray 29 8000.0
7 Vicky 37 32500.0
2.sqlite> SELECT ID, имя, возраст, ЗАРПЛАТА ОТ компании, где ЗАРПЛАТА < 20000;
ID NAME AGE SALARY
3 Kenny 19 9700.0
4 Henry 23 13555.0
5 Sam 18 17000.0
6 Ray 29 8000.0
3.sqlite> SELECT ID, имя, возраст, ЗАРПЛАТА ОТ компании, где возраст> (SELECT Возраст от компании, где ЗАРПЛАТА < 20000);
ID NAME AGE SALARY
1 John 24 21000.0
2 Davy 22 20000.0
4 Henry 23 13555.0
6 Ray 29 8000.0
7 Vicky 37 32500.0
Подзапрос должен возвращать только одну строку; поместите там совокупную функцию ('SELECT MIN (AGE) FROM ...' или что-то подходящее). IIRC SQLite должен быть ошибочным, если подзапрос, используемый в качестве выражения, возвращает несколько строк ... –