Это может прозвучать как запрос функции больше, чем что-либо другое, но было бы неплохо, если бы SQL разрешил использование оператора IN
в операторе select
, таком как приведенный ниже. Я хочу создать new_variable
в table1
на основе переменной ID
в table2
, следовательно, оператор case
.
select ID,
case when ID in (select ID
from table2)
then 1
else 0
end as new_variable
from table1
Я понимаю, что SQL выдаст мне ошибку если я запускаю это, но почему это так? Мне не кажется очевидным, почему SQL разработчики не смогли разрешить использование оператора IN
вне предложения WHERE
.
Примечание: в настоящее время я использую левое соединение, чтобы избежать этой проблемы, поэтому я не зациклен на этом.
select ID,
case when ifnull(b.ID, 0) = 0 then 0
else 1
end as variable_name
from table1
left join(select ID from table2) as b
on a.ID = b.ID