我是SQL的菜鸟,我想在这里做点什么。我一直在四处寻找并没有找到办法,也许是因为我不知道如何解释它,因此我可能没有正确搜索。
这是问题所在: 我有一个包含3列的表,作为不同表的辅助属性集(但这与问题无关)。
我有什么:
--------------------------------------------
listing_id | field_id | listing_value
--------------------------------------------
1 Fruit Apple
1 Color Red
2 Fruit Banana
2 Color Yellow
3 Fruit Grape
3 Color Purple
我想要的是什么:
----------------------------------------------------
listing_id | listing_value_1 | listing_value_2
----------------------------------------------------
1 Apple Red
2 Banana Yellow
3 Grape Purple
请记住,这一切都发生在同一张桌子上。
这是选择值的全部内容,因此查询必须以SELECT
我尝试了JOIN, GROUP and UNION
命令,但我没有取得任何成功的结果。
另外,我试图通过缺少一些命令的phpMyAdmin来实现这一点(例如我不能使用INTERSECT
,我可以使用Select * FROM x
但似乎无法使用SELECT x.*
)
提前感谢:)
答案 0 :(得分:1)
您可以使用聚合函数和CASE
:
select listing_id,
max(case when field_id = 'Fruit' then listing_value end) listing_value_1,
max(case when field_id = 'Color' then listing_value end) listing_value_2
from yourtable
group by listing_id
答案 1 :(得分:0)
试试这个
SELECT t1.listing_id , t1.listing_value as listing_value1 , t2.listing_value as listing_value2
FROM table t1, table t2 where t1.listing_id = t2.listing_id AND t1.field_id = "Fruit" AND t2.field_id = "Color"