mysql - SQL SELECT 并使数据中的某些列返回空白

标签 mysql sql

我有一个名为 empSchedule 的表。 empSchedulenametaskvisibility 组成。 visibility 是“公开”或“私有(private)”。

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

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

+----------+-------+------------+
| name     | task  | visibility |
+----------+-------+------------+
| john     | HW    | public     |
| james    | TextC | public     |
| bill     |       | private    |
+----------+-------+------------+

下面的查询不起作用,因为它排除了所有私有(private)行。

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

我正在学习 SQL,因此如果无法完成我正在寻找的内容,我希望看到替代答案。

最佳答案

你只需要一个小的case表达式

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

关于mysql - SQL SELECT 并使数据中的某些列返回空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49248374/

相关文章:

mysql - Mule MySQL 连接器

php - 每个用户 ID 的不同表中的字段求和

sql - 从以 root 身份运行的 shell 脚本以 oracle 用户身份运行 oracle 脚本

php - 计算结果集字段中包含的唯一单词总数

sql - 两列之和之间的除法

mysql - 事务不适用于我的 MySQL 数据库

mysql - 如何创建 Django 自定义查询?

mysql - 转换MySQL中的列类型

mysql - deleted_at 列的 SQL 索引

mysql - 解释我没有编写的复杂查询的选择输出