我正在撰写left join
并获得
没有为第1列指定列“错误。
我做错了什么?
LEFT JOIN
(
SELECT CASE WHEN COUNT(*) > 1 THEN '' ELSE mycolumn END
FROM
(
SELECT code_value
FROM allocation
WHERE allocation.id='[val]'
GROUP BY code_value
) grp
GROUP BY code_value
) AS code4table
ON code4table.itemid = table1.id
如果所有值都相同,我想返回code_value值,否则返回''
我猜我还需要在我的选择查询中包含code4table.itemid
但不确定如何。
提前感谢您的帮助。
答案 0 :(得分:10)
您需要列别名(ALIASCOLUMN
下方):
LEFT JOIN (
SELECT CASE WHEN COUNT(*) > 1 THEN '' ELSE mycolumn END AS ALIASCOLUMN
FROM
...
) AS ALIASTABLE
ON ALIASTABLE.ALIASCOLUMN = outertable.column
在您的情况下,ALIASCOLUMN
名称应为itemid
,以便匹配外部联接命名。
(因为您正在使用case / when派生一个新列,即使mycolumn
中有一个命名列ELSE
,Sql也不会将派生列名默认为this。如果这样做有意义,您可以保留相同的列名称(mycolumn
)并更改最终ON
以匹配。