2017-07-27 91 views
1

如何使值以不同方式显示?如何根据SQL的值查看不同的数据

例子: 我有一个表“Feelings”一个叫“Happy” 如果我select * from 'Happy'它会带回列的值1, 2, 3(与用户ID显示哪些用户是感觉) 1代表是,2代表没有,我想表不显示1,2,3而是表现出肯定的,没有3代表也许 ,也许

我怎么会去了解,使本?

+1

欢迎来到StackOverflow。你试过什么了? – dg99

+0

通过在SQL上购买书:) –

+0

'案件ID当1那么'是'当2那么'没'当3那么'也许'结束作为名称'。也许。或者在表格中添加一个名称列,用SELECT代替ID。你的问题不是特别清楚。 –

回答

0

如果你只是有一个表称为Feelings和一个名为Happy只标识列,你可以试试下面的查询:

SELECT 
    user_id, 
     CASE HAPPY 
     WHEN '1' THEN 'Yes' 
     WHEN '2' THEN 'No' 
     WHEN '3' THEN 'Maybe' 
     ELSE 'Other' 
    END AS 'feeling_happy' 
FROM FEELINGS 

否则,如果你有2个表,一个与Happy列名为Feelings这有标识,并呼吁Happy与一列的识别码与定义的状态在另一列(我们称之为happy_x)另一个表,那么你可以简单的使用下面的查询:

SELECT 
    f.user_id, h.happy_x 
FROM Feelings f 
    INNER JOIN Happy AS h 
     ON h.id = f.happy 
+0

我相信她有另一个链接到用户ID的表。其中她希望基于1,2,3值的关联用户标识。我认为她最终需要的是在感觉和用户之间使用WHERE子句进行简单连接。 – Isaiah3015

+0

好点 - 我会将它作为选项进行编辑。 – Phil

+0

在sql中只有一个这会给出一个错误 – Hogan

1
CASE HAPPY 
    WHEN '1' THEN 'Yes' 
    WHEN '2' THEN 'No' 
    WHEN '3' THEN 'Maybe' 
    ELSE 'Other' 
END AS 'Happy' 
0

虽然您可以在此处使用CASE作为其他答案,但您也可以使用连接 - 查找值的表或CTE或VALUES子句。即使是存储过程中的临时表。

这将是这样的:

SELECT user_id, COALESCE(lookup.value,'Unknown') as happy 
FROM feelings 
LEFT JOIN (
    VALUES 
     ('1','Yes'), 
     ('2','No'), 
     ('3','Maybe') 
) AS lookup(k,value) ON feelings.happy = lookup.k 

在一个表中使用连接和存储相关的信息是一个做事的更SQL的方式,并提供了许多好处,包括更容易维护和经常更快的执行。

相关问题