mysql - 合并 MySQL 中的整个记录

标签 mysql coalesce

我目前正在 MySQL 查询中单独合并字段,但我想合并整个记录。

这可能吗?

SELECT la.id, 
COALESCE(( SELECT name FROM lookup_changed l0, 
           ( SELECT MAX(id) id 
             FROM lookup_changed     
             WHERE lookup_id = 26
           ) l1 
           WHERE l0.id = l1.id
         ), la.name) name,
COALESCE(( SELECT msisdn FROM lookup_changed l0, 
           ( SELECT MAX(id) id 
             FROM lookup_changed     
             WHERE lookup_id = 26
           ) l1 
           WHERE l0.id = l1.id
         ), la.msisdn) msisdn
FROM lookup_added la
WHERE la.id = 26

@Alma Do - 伪 SQL 是:

SELECT la.id, 
MULTICOALESCE(( SELECT <name, msisdn> FROM lookup_changed l0, 
                ( SELECT MAX(id) id 
                  FROM lookup_changed     
                  WHERE lookup_id = 26
                ) l1 
                WHERE l0.id = l1.id
              ), <la.name, la.msisdn>) <name, msisdn>
FROM lookup_added la
WHERE la.id = 26

最佳答案

由于 COALESCE()“返回第一个非 NULL 参数”,听起来您想检索“查询集中的第一个非 NULL 结果”:

-- syntax error
SELECT COALESCE(
    SELECT a FROM ta,
    SELECT b FROM tb
);

-- roughly equates to
( SELECT a AS val FROM ta WHERE a IS NOT NULL ORDER BY a LIMIT 1 )
UNION
( SELECT b AS val FROM tb WHERE b IS NOT NULL ORDER BY b LIMIT 1 )
ORDER BY val LIMIT 1 ;

评论:

  • 我添加了 ORDER BY 子句,否则“第一行”没有任何意义
  • 内部的 LIMIT 1 子句是可选的(但允许提前修剪子结果)
  • 子查询周围的括号是强制性的

关于mysql - 合并 MySQL 中的整个记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21331094/

相关文章:

python - SQLAlchemy:coalesce() 首先返回非 NULL 和非空结果

postgresql - PostgreSQL 中包含 insert into 子句的合并语句失败

mysql - 多个一对多关系的正确架构?

php - 从 mysql 获取数据后轮播不立即显示卡片

mysql - 使用 mysql 全文搜索与 hibernate

sql - 替换每个分区的 NULL 值

mysql - 这个简单的 COALESCE 选择查询有什么问题? (mysql)

mysql - mysql 的 collesce 问题

php - 从 mysql 中选择并用复选框格式化它们并设置选中的 ="checked"属性

java - 如何使用 CachedRowSet 进行 SQL 查询?