从单个列中选择两个值并生成结果行

时间:2013-12-10 21:54:42

标签: mysql sql

我的问题似乎很简单,但我无法理解。我有一个表,我需要构建一个两列结果,使用该表中只有一列的值......

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'

....但我似乎无法弄清楚如何在我的示例结果显示的同一行上获得这两个结果。不确定这是否有意义,如果需要进一步的细节,请告诉我。

由于

2 个答案:

答案 0 :(得分: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

  

更多信息

答案 1 :(得分: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'