Да, возможно написать SQL запрос с выражением в WHERE и в SELECT без повторения этого выражения и без использования вложенного SELECT. В SQL есть такая концепция как "псевдонимы столбцов" (column aliases) и "псевдонимы таблиц" (table aliases), которые позволяют использовать алиасы для имен столбцов и таблиц внутри запроса.
Для использования выражения из SELECT в WHERE без повторения выражения, можно задать алиас столбца в выражении SELECT, а затем использовать этот алиас в выражении WHERE. Например:
SELECT column1, column2, column1 + column2 AS sum_of_columns FROM table_name WHERE sum_of_columns > 10;
В этом запросе мы задаем алиас sum_of_columns
для выражения column1 + column2
и затем используем его в выражении WHERE для фильтрации строк, где сумма значений в столбцах column1
и column2
больше 10.
Аналогично, для использования выражения в SELECT в WHERE без повторения можно использовать алиас таблицы, чтобы указать на источник данных. Например:
SELECT t1.column1, t1.column2 FROM table1 AS t1 JOIN table2 AS t2 ON t1.column3 = t2.column3 WHERE t1.column1 > 10;
В этом запросе мы задаем алиас t1
для таблицы table1
и затем используем этот алиас в выражении WHERE для фильтрации строк, где значение в столбце column1
таблицы table1
больше 10.
Таким образом, использование алиасов столбцов и таблиц в SQL позволяет написать запрос с выражением и в WHERE, и в SELECT, без повторения этого выражения и без использования вложенного SELECT.