我有这张桌子:
ID | name | result |
--------------------
1 | A | 1 |
--------------------
2 | B | 2 |
--------------------
3 | C | 1 |
--------------------
1 | A | 2 |
--------------------
4 | E | 2 |
--------------------
我想在| result |旁边添加一个新的临时列,其中result = 1的值应该是100,而result = 2的值应该是80,所以它应该是这样的:
ID | name | result | NewColumn|
-------------------------------
1 | A | 1 | 100 |
-------------------------------
2 | B | 2 | 80 |
-------------------------------
3 | C | 1 | 100 |
-------------------------------
1 | A | 2 | 80 |
-------------------------------
4 | E | 2 | 80 |
-------------------------------
如何在SQL中查询?
答案 0 :(得分:9)
在SELECT
的列列表中使用CASE
expression - 如下所示:
SELECT
ID,
name,
result,
CASE
WHEN result = 1 THEN 100
WHEN result = 2 THEN 80
ELSE NULL
END AS NewColumn
FROM YourTable
添加其他WHEN
表达式或根据需要更改ELSE
表达式。
答案 1 :(得分:1)
您可以在查询中添加case
语句:
SELECT id, name, result, CASE result WHEN 1 THEN 100 WHEN 2 THEN 80 ELSE NULL END
from my_table
答案 2 :(得分:1)
SELECT ID
,name
,result
,NewColumn = CASE WHEN result = 1 THEN 100 WHEN result = 2 THEN 80 END
FROM Table1
答案 3 :(得分:1)
由于上面给出的答案也是正确的。但我会说,如果现有列和新列之间有预定义的关系或逻辑,那么您也可以在没有CASE
的情况下实现这一点。为所有可能的值写CASE
是不可能的也不是有效的。
对于您现有的数据。我可以使用类似这样的东西
SELECT ID, name, result, (20*(6-result)) as NewColumn
FROM YourTable
我假设1=>100
,2=>80
,3=>60
,4=>40
,5=>20
。
当然这只是为了理解目的。您可以根据实际数据创建自己的表达式。
答案 4 :(得分:0)
您将在Mysql中使用IF语句
SELECT col1,col2,col3,IF(col3 = 1,'100',IF(col3 = 2,80,'')) 来自your_table