这是我的查询:
select col1, col2, (<a fairly complex query> as col3) from <a table>
<a fairly complex query>
可能会返回 NULL
,在这种情况下我想设置 col3
至 col2
.我知道我可以用 CASE
做到这一点声明:
select col1, col2,
CASE WHEN (<a fairly complex query>) is NULL col2
ELSE (<a fairly complex query>) END AS col3
from <a table>
但是,该方法执行 <a fairly complex query>
两次。如果我只想执行 <a fairly complex query>
有哪些选项?一次?
最佳答案
您可以使用子查询和COALESCE
:
SELECT col1, col2, COALESCE(col3, col2) AS col3
FROM (select col1, col2, (<a fairly complex query>) as col3
from <a table>) AS sub;
没有子查询:
SELECT col1, col2, COALESCE(<a fairly complex query>, col2) AS col3
FROM <a table>;
关于mysql - 高效的 CASE 语句,SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49329138/