使用SELECT时,您可以根据其他字段修改返回字段的值吗?

时间:2011-01-15 18:45:32

标签: mysql sql

使用MySQL SELECT时,您可以根据其他字段更改返回字段的值吗?

例如,如果我有这个选择:

SELECT city,state,country FROM table

现在如果city为空且状态为空,我希望country的值也为空(无论country是否实际有值)。

示例表:

id | city | state | country
-----------------------------
1  | Here | There | MyCountry
2  |      |       | YourCountry

所以使用上面的表格,我希望id = 1的结果返回Here,There,MyCountry但是id = 2的结果应该是空的,空的,空的

由于

编辑:为了澄清,WHERE子句不起作用,因为即使city和state为空,我也需要返回该行。一个更好的例子可能是SELECT id,city,state,country FROM my_table

4 个答案:

答案 0 :(得分:8)

更新(更正印刷错误):

SELECT city,state,
CASE 
 WHEN (city IS NULL OR city='') AND (state IS NULL or state='') THEN ''
 ELSE country
END as country_1
 FROM `table`

您也可以使用IF代替CASE
  IF ((city IS NULL OR city='') AND (state IS NULL or state=''),'',country) as country_1

答案 1 :(得分:1)

答案是肯定的;你正在寻找所谓的控制流功能。

查看http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html

答案 2 :(得分:1)

a1ex07是对的,但您需要在他的SELECT stmt中修复一些查询错误。

首先,在“state”之后有一个缺少的逗号,第二,如果你的表真的被称为“table”,你必须用反引号括起来,因为它是一个保留的MySQL关键字。

SELECT city,state, 
CASE 
 WHEN (city IS NULL OR city='') AND (state IS NULL or state='') THEN ''
 ELSE country
END as country_1
 FROM `table`` 

(排除第二个反引号,如果单个,则stackoverflow使用那些语法突出显示。)

答案 3 :(得分:0)

为什么不直接使用WHERE子句?

例如:

SELECT city, state, country FROM <table> WHERE (city <> "" OR state <> "");

N.B。:您需要更换'&lt;&gt; “”上面带有'IS NOT NULL',如果它们实际上是空的而不是空的。