SQL查询从具有键/值对的相同表中选择和排序

时间:2012-02-19 20:56:15

标签: sql

好的,我有一个包含键和值的表,我需要查询和订购,看起来有点像这样:

enter image description here

假设我想拉出“dog”(以及任何其他值)的webcategory中的所有不同项(resource_no),并按“order”按升序排序,以便我的结果为:

enter image description here

我无法弄清楚如何查询我的表以允许这个...我尝试过内连接但它们似乎不起作用...任何人都可以帮忙吗?谢谢!

2 个答案:

答案 0 :(得分:6)

当它在同一个表中的不同行中时,有点难以阅读,但这应该是针对您现在拥有的值。如果您正在考虑动态列,则需要使用特定于数据库的过程。

SELECT a.RESOURCE_NO, a.value webcategory, b.value location 
FROM      resources a
LEFT JOIN resources b ON a.RESOURCE_NO=b.RESOURCE_NO AND b.key='location'
LEFT JOIN resources c ON a.RESOURCE_NO=c.RESOURCE_NO AND c.key='order'
WHERE a.key = 'webcategory' AND a.value='dog'
GROUP BY RESOURCE_NO
ORDER BY c.value 

演示here

答案 1 :(得分:0)

select  resource_no
,       'dog'
,       location
from    YourTable
where   webcategory = 'location'
        and resource_no in 
        (
        select  resource_no
        from    YourTable
        where   webcategory = 'dog'
        )
order by
        location