2013-12-10 46 views
0

我的问题看起来很简单,但我无法弄清楚。我有一个表,我需要从构建一个两列结果,使用值从该表中只有一个列...从单个列中选择两个值并生成结果行

ID - ENTITY - CATEGORY 
1 Bread Food 
2 Apple Food 
3 Computer Electronics 
4 Chair Furniture 
5 TV  Electronics 
6 Sofa  Furniture 

我需要应该是这样的结果......

EAT_THIS - SIT_HERE 
Bread  Chair 

例(错误)代码...

select ENTITY as EAT_THIS from table where CATEGORY = 'Food' 
select ENTITY as SIT_HERE from table where CATEGORY = 'Furniture' 

....但我似乎无法弄清楚如何获得在同一行这两个结果就像我的例子表明。不知道这是否有意义,请让我知道是否需要进一步的细节。

感谢

+0

请参阅CASE WHEN ... – Strawberry

+0

为什么“面包 - 椅子”而不是“面包 - 沙发”?你想申请什么规则? – peterm

回答

0

使用join你可以做到这一点:

SELECT A.entity as EAT_THIS, B.entity as SIT_HERE 
FROM tablename A 
JOIN tablename B 
WHERE A.category = 'Food' 
AND B.category = 'Furniture' 

但是,不能保证你的结果将是独一无二的。如果有什么你就这样结束了:

Bread, Chair 
Apple, Chair 

...而不是(我假设你想要的):

Bread, Chair 
Apple, Sofa 

交叉连接将帮助你在这种情况下,看到这文章: https://stackoverflow.com/a/16471286/2812842

更多信息

0

如果不指定两个表之间的关系(或在我们的情况下,同一个表), 所有的笛卡尔乘积的可能性就会显示

SELECT A.ENTITY AS EAT_THIS , B.ENTITY AS SIT_HERE 
FROM tablename A,tablename B 
WHERE A.category = 'Food' 
AND B.category = 'Furniture' 
相关问题