SQL查询在字段而不是新记录中的数据

问题描述:

我已经搜索了这个,但我可能使用了错误的术语。SQL查询在字段而不是新记录中的数据

下面的查询

SELECT t1.name, t2.entry FROM t1 
INNER JOIN t2 ON t2.ID = t1.ID 
WHERE t2.meta_key IN ('wp_x1','wp_x2'); 

返回类似如下数据,其中有2个记录每个meta_key领域

name1,wp_x1_entry 
name1,wp_x2_entry 
name2,wp_x1_entry 
name2,wp_x2_entry 

如何修改查询,而不是返回这个的?

name1,wp_x1_entry,wp_x2_entry 
name2,wp_x1_entry,wp_x2_entry 

表/字段名称已更改为隐藏敏感信息。另外,我知道这些设计很糟糕,但我无法更改数据库结构。

这将从C#代码调用mySql数据库。

+2

您需要使用'group_concat'。 – 2015-02-24 15:07:19

加入另一时间T2,寻找wp_x2仅

SELECT t1.name, t2.entry, t3.entry 
FROM t1 
    JOIN t2  ON t2.ID = t1.ID and t2.meta_key = 'wp_x1' 
    JOIN t2 as t3 ON t3.ID = t1.ID and t3.meta_key = 'wp_x2' 

将返回两个wp_x1和wp_x2只有行。如果需要/不需要,请使用LEFT_JOIN。

尝试通过t1.name和group_concat t2.entry进行分组。

这样的:

SELECT t1.name, GROUP_CONCAT(t2.entry) FROM t1 
INNER JOIN t2 ON t2.ID = t1.ID 
WHERE t2.meta_key IN ('wp_x1','wp_x2') 
GROUP BY t1.name; 

http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html