Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.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 SQL选择并使返回的数据中的某些列为空_Mysql_Sql - Fatal编程技术网

Mysql SQL选择并使返回的数据中的某些列为空

Mysql SQL选择并使返回的数据中的某些列为空,mysql,sql,Mysql,Sql,我有一个名为empSchedule的表。 empSchedule由名称、任务和可见性组成。 可见性为“公共”或“私人” 我想选择表中的所有内容,visibility是“public”还是“private”。但是,如果visibility为“private”,我希望将task中的值设为空 例如,我想使用SELECT查看这样的表 +----------+-------+------------+ | name | task | visibility | +----------+------

我有一个名为
empSchedule
的表。
empSchedule
名称
任务
可见性
组成。
可见性
为“公共”或“私人”

我想选择表中的所有内容,
visibility
是“public”还是“private”。但是,如果
visibility
为“private”,我希望将
task
中的值设为空

例如,我想使用SELECT查看这样的表

+----------+-------+------------+
| name     | task  | visibility |
+----------+-------+------------+
| john     | HW    | public     |
| james    | TextC | public     |
| bill     |       | private    |
+----------+-------+------------+
下面的查询不起作用,因为它排除了所有私有行

SELECT name, task, visibility
FROM empSchedule
WHERE visibility = 'public';

我正在学习SQL,所以如果我所寻找的东西做不到,我希望看到其他的答案

您只需要一个小的
大小写
表达式

SELECT name, 
       CASE visibility WHEN 'private' THEN '' ELSE task END task,
       visibility
FROM empSchedule
WHERE visibility IN ('public', 'private')

您只需要一个小的
大小写
表达式

SELECT name, 
       CASE visibility WHEN 'private' THEN '' ELSE task END task,
       visibility
FROM empSchedule
WHERE visibility IN ('public', 'private')

您还可以在
SQL
查询中使用
IF
语句,如下所示:

SELECT `name`, 
  IF(`visibility` = 'private', "", `task`) END task,
  `visibility`
FROM `empSchedule`
定义和用法

IF()
函数在条件为TRUE时返回一个值,或在条件为FALSE时返回另一个值

注意:函数可以返回字符串或数值

语法

IF(condition, value_if_true, value_if_false) 

您还可以在
SQL
查询中使用
IF
语句,如下所示:

SELECT `name`, 
  IF(`visibility` = 'private', "", `task`) END task,
  `visibility`
FROM `empSchedule`
定义和用法

IF()
函数在条件为TRUE时返回一个值,或在条件为FALSE时返回另一个值

注意:函数可以返回字符串或数值

语法

IF(condition, value_if_true, value_if_false)