MySQL PIVOT 和 JOIN 内部 MAX CASE

标签 mysql join max

我有两个表domaindomain_meta。我想要完成的是PIVOT表domain_meta(我能够做到)并将该表与域连接起来。但我无法理解如何使用 PIVOT 和 MAX CASE 连接这些表。是对我的domain_meta 表使用某种内部选择的最简单方法吗?到目前为止,我的代码如下所示:

域名

SELECT
*
FROM 
domain
ORDER BY id

domain_meta

SELECT
id,
domain_id,
source,
MAX(CASE WHEN (meta_key = 'domain') THEN meta_value ELSE NULL END) AS domain,
MAX(CASE WHEN (meta_key = 'ip') THEN meta_value ELSE NULL END) AS ip,
MAX(CASE WHEN (meta_key = 'link') THEN meta_value ELSE NULL END) AS link,
MAX(CASE WHEN (meta_key = 'net') THEN meta_value ELSE NULL END) AS net
FROM
domain_meta
GROUP BY id
ORDER BY id

domain domain_meta

最佳答案

类似这样的东西 -

SELECT
  d.id,
  d.domain,
  MAX(CASE WHEN (dm.meta_key = 'domain') THEN dm.meta_value ELSE NULL END) AS domain,
  MAX(CASE WHEN (dm.meta_key = 'ip') THEN dm.meta_value ELSE NULL END) AS ip,
  MAX(CASE WHEN (dm.meta_key = 'link') THEN dm.meta_value ELSE NULL END) AS link,
  MAX(CASE WHEN (dm.meta_key = 'net') THEN dm.meta_value ELSE NULL END) AS net
FROM
  domain d
  LEFT JOIN domain_meta dm
    ON d.id = dm.domain_id
GROUP BY d.id

关于MySQL PIVOT 和 JOIN 内部 MAX CASE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42996894/

相关文章:

mysql - 连接相同的列名

performance - 有没有办法在 O(1) 中找到最大值并在 O(lgN) 中查找?

max - 如何在 ArangoDB AQL 查询中获取第一个和最后一个条目

java - 如何修改SQL语句?

mysql - 如何在单个选择中返回多个值

MySql 带条件排序

mysql - Laravel - 如何在这里分页?

mysql - 连接 MySQL 上的多个表

SQL JOIN 在哪里放置 WHERE 条件?

mysql - 在 sql 中计数 - 两个表