1

我是 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.*

提前致谢 :)

4

2 回答 2

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

SQL Fiddle with Demo

于 2012-09-15T15:54:26.760 回答
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"
于 2012-09-15T15:37:59.800 回答