我正在写一个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
Run Code Online (Sandbox Code Playgroud)
如果所有值都相同,我想返回code_value值,否则返回''我猜我还需要code4table.itemid在我的select查询中包含但不确定如何.
在此先感谢您的帮助.
Stu*_*tLC 12
您需要一个列别名(ALIASCOLUMN如下所示):
LEFT JOIN (
SELECT CASE WHEN COUNT(*) > 1 THEN '' ELSE mycolumn END AS ALIASCOLUMN
FROM
...
) AS ALIASTABLE
ON ALIASTABLE.ALIASCOLUMN = outertable.column
Run Code Online (Sandbox Code Playgroud)
在你的情况下,ALIASCOLUMN名称应该是itemid为了匹配外连接命名.
(因为你获得与案件的新列/时,即使你有一个名为列mycolumn中ELSE,则SQL不会违约派生列名这一点).如果这样做有意义,您可以保留相同的列名(mycolumn)并更改最终ON匹配.
| 归档时间: |
|
| 查看次数: |
17792 次 |
| 最近记录: |