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

Ste*_*hen 3 sql

好的,我有一个表,其中包含我需要查询的键和值,并且从中看起来有点像这样:

在此输入图像描述

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

在此输入图像描述

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

Joa*_*son 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 
Run Code Online (Sandbox Code Playgroud)

在这里演示.