Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 使用SELECT时,是否可以基于其他字段修改返回字段的值?_Mysql_Sql - Fatal编程技术网

Mysql 使用SELECT时,是否可以基于其他字段修改返回字段的值?

Mysql 使用SELECT时,是否可以基于其他字段修改返回字段的值?,mysql,sql,Mysql,Sql,使用MySQL SELECT时,您能否基于其他字段更改返回字段的值 例如,如果我有此选项,请选择: SELECT city,state,country FROM table 现在,如果city是空的,state是空的,我希望country的值也返回空的(无论country是否有值) 示例表: id | city | state | country ----------------------------- 1 | Here | There | MyCountry 2 | |

使用MySQL SELECT时,您能否基于其他字段更改返回字段的值

例如,如果我有此选项,请选择:

SELECT city,state,country FROM table
现在,如果city是空的,state是空的,我希望country的值也返回空的(无论country是否有值)

示例表:

id | city | state | country
-----------------------------
1  | Here | There | MyCountry
2  |      |       | YourCountry
在上表中,我希望id=1的结果返回这里,那里,MyCountry,但是id=2的结果应该是空的,空的,空的

谢谢


编辑:为了澄清,WHERE子句不起作用,因为我需要返回行,即使城市和州为空。更好的例子可能是从my_表中选择id、城市、州、国家,为什么不使用WHERE子句呢

例如:

SELECT city, state, country FROM <table> WHERE (city <> "" OR state <> "");
选择城市、州、国家(城市或州);

注意:如果上面的“””实际上是空的,而不是空的,那么您需要将其替换为“不为空”。

答案是肯定的;您正在寻找所谓的控制流函数

查看更新(已更正印刷错误):

您也可以使用
IF
而不是
CASE


如果((city为NULL或city='')和(state为NULL或state=''),“”,country)作为country_1
a1ex07是正确的,但是您需要修复他选择的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使用那些用于语法突出显示(如果是单个的)。

-1。这不是OP所要求的;你的查询将返回一行,他的查询将返回两行。@Adam Maras-那么你是在投反对票,因为我建议了一个比OP特别要求的答案更合适的替代答案?当OP特别要求查询以某种方式返回时,你不能称之为更合适的答案。OP对预期的功能非常清楚。@middaparka:我认为您需要更正您的N.B.部分:
city NULL
不是检查值是否为NULL的正确方法(实际上,它总是假的[准确地说是NULL])@Adam Maras如果您这样看,那么OP专门使用了city,state,在他的SELECT子句中的国家-他将如何处理三个空字段和返回的数据中没有ID?澄清一下-如果没有可用的城市或州数据,您是否确实希望返回一行?是的,我确实需要返回行,即使没有城市或州数据,这非常好。。。非常感谢。一旦你知道你在寻找什么,这很容易!这里的流函数是受控的(来自mysql v5手册):这就是我最后实际做的:从表中选择city,state,if(city=''和state='',country)作为country谢谢注意到的更正。不,我的表名不是真正的表,我只是用它作为一个例子,但它很好地提醒我们,它需要在backticks中!谢谢我在看到你的帖子之前发现了这个,但绝对是一个很好的链接!
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``