如何组合表的某些行并将它们显示为MySQL中的列?

时间:2014-04-08 10:38:51

标签: mysql

我有一张这样的表

record   element   value
1      | 8767    | Name1
1      | 8768    | City1
2      | 8767    | Name2
2      | 8768    | City2

然后我想创建这样的报告

A       | B
Name1   | City1 
Name2   | City2

任何人都可以帮忙吗?

2 个答案:

答案 0 :(得分:3)

SELECT
    a1.value AS A,
    a2.value AS B 
FROM a AS a1 join a AS a2 ON
    a1.record=a2.record
WHERE a1.element=8767 AND a2.element=8768;

如果您想测试它,可以使用

进行设置
USE test;
CREATE TABLE a (record int not null, element int not null, value text not null);
INSERT INTO a VALUES (1, 8767, 'Name1'), (1, 8768, 'City1'), (2, 8767, 'Name2'), (2, 8767, 'City2');

答案 1 :(得分:0)

您需要将此表连接到自身。在这种情况下,您将在查询中使用其名称两次,因此您需要为它们提供一些查询唯一名称。最终要求如下:

SELECT A.*, B.*
FROM TABLE A
LEFT JOIN TABLE B ON A.RECORD=B.RECORD AND A.ELEMENT=B.ELEMENT
WHERE A.VALUE LIKE 'Name1%' AND B.VALUE LIKE 'City%';
祝你好运!