0

我有一个看起来像这样的中间表(在我加入其他 2 个表之后):

    ID Meta_key Meta_value
    

    22 公司 亚马逊

    22 地址西雅图


    25 公司 谷歌

    25 地址山景城

    

等等...

我的问题是编写单个查询以获取给定 ID 的公司名称和地址的最简单方法是什么?构造这个 where 子句的最佳方法是什么,因为我想要类似 select meta_value from table where meta_key = "Company" and meta_key = "Address" (这显然行不通)...我敢肯定有一个简单的方法这样做但现在似乎无法想到,我还需要别名来区分公司的元值和结果集中的地址。

提前致谢

4

2 回答 2

2

如果您希望两个键在同一行中,您可以自行加入表格

SELECT t1.ID, t1.Meta_value as "Company", t2.Meta_value as "Address"
FROM table t1
JOIN table t2 ON t2.ID = t1.ID AND t2.Meta_key = "Address"
WHERE t1.Meta_key = 'Company'

或者,如果您希望使用子查询更简单的单个 ID:

SELECT 
    22 as "ID",
    (SELECT Meta_value FROM table WHERE id = 22 AND Meta_key = "Company") as "Company",    
    (SELECT Meta_value FROM table WHERE id = 22 AND Meta_key = "Address") as "Address";    
于 2012-08-02T07:47:32.977 回答
0
SELECT CASE WHEN meta_key ='Address'
       THEN Meta_value
       ELSE ''
END AS address,
CASE WHEN meta_key ='Company'
       THEN Meta_value
       ELSE ''
END AS company
FROM tbl where id=22 
于 2012-08-02T07:41:49.617 回答