2016-12-30 56 views
-1

我有一个名为Employee带有字段ID,键,值表。该表如下...如何写一个SQL查询来选择单个表的多个行

ID | Key | Value 
1 | Fname | a 
1 | Lname | aa 
2 | Fname | b 
2 | Lname | bb 

我想下面的输出...

1 | a | aa 
2 | b | bb 

请告诉我查询产生这样的输出...

+1

先试一下;问题太宽 –

+2

btw,'key'是一个MySQL保留字;想你想知道事先https://dev.mysql.com/doc/refman/5.5/en/keywords.html –

+1

@弗雷德-II-另一个数据透视表的问题,联系适当的重复它 – Shadow

回答

0

您可以使用case and aggregate to achieve that:

select `ID`, 
    max(case when `Key` = 'Fname' then `Value` end) fname, 
    max(case when `Key` = 'Lname' then `Value` end) lname 
from Employee 
group by `ID`; 

PS - 避免在您的设计中使用(MySQL)保留的关键字,如key等。

参考:

+0

谢谢我只是改变了名为键的列和查询工作正常..谢谢guyz帮助... – Dravis

-3

如果您想选择所有多行则

SELECT*FROM ROW_NAME; 

如果你想选择特别然后

SELECT NAME,NAME,NAME,FROM ROW_NAME 

此处NAME是用于选择你想要的。

+1

这不是什么问题。 –

+0

另外,在真实世界中,除非实际使用表中的所有行,否则几乎不应该使用'Select *',因为这是性能问题,导致您没有使用数据。 – user2366842

相关问题