mysql - 高效的 CASE 语句,SQL

标签 mysql sql case

这是我的查询:

select col1, col2, (<a fairly complex query> as col3) from <a table>

<a fairly complex query>可能会返回 NULL ,在这种情况下我想设置 col3col2 .我知道我可以用 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/

相关文章:

php - 如何将sql数据库导入azure for webapp?

sql - Oracle 数据库在 UPDATE 查询中无限挂起

sql - 将 CTE 与分层数据和 'cumulative' 值结合使用

sql - 对空字符串使用 CASE

php - 在 Android 上注册并使用 PHP、MySQL 和 SQLite 保存在数据库中

php - MySQLi 使用 php 进行查询 - 查询字符串包含单引号和大括号

javascript - 如何使用 jquery/ajax 对已经从数据库中获取的数据进行排序?

php - 使用 PHP 按周分组和显示 MySQL 条目

case - Netsuite 公式 - "blank"或 "null"字段

mysql - 如何在 case 语句中引用外部表中使用聚合函数的列?