Ответ уже принят, но я подумал, что добавлю это:
Это может помочь подумать о типе данных и о том, где эти типы вписываются в общий запрос.SQL-запросы могут возвращать по существу три типа:
- Одно скалярное значение
- Список значений
- Таблица значений
(Конечно, список - это просто таблица из одного столбца, а скаляр - просто список из одного значения.)
Когда вы смотрите на типы, вы видите, что запрос SQL SELECT имеет следующий шаблон:
SELECT scalar(s)
FROM table
WHERE boolean-scalar
Если ваша функция или подзапрос возвращает таблицу, она входит в предложение FROM.Если он возвращает список, он может войти в предложение FROM или его можно использовать с оператором IN как часть предложения WHERE.Если он возвращает скаляр, он может войти в предложение SELECT, предложение FROM или в логический предикат в предложении WHERE.
Это неполное представление запросов SELECT, но я обнаружил, что это помогаетвыяснить, куда должны идти мои подзапросы.