mysql - 如何仅选择具有非空值sql的列
问题描述
我有一个表,它有几列,可以为空或有值。我只想得到那些有值的列。
我尝试使用IF
inSELECT
子句:
SELECT
IF(column1 IS NOT NULL, column1, null AS value,
IF(column2 IS NOT NULL, column2, null AS value,
IF(column3 IS NOT NULL, column3, null AS value,
IF(column4 IS NOT NULL, column4, null AS value,
IF(column5 IS NOT NULL, column5, null AS value,
IF(column6 IS NOT NULL, column6, null) AS value
FROM
table1;
但这不是我想要的结果,因为我一开始就解释了。我也尝试了CASE
相同的结果。</p>
编辑:
例如,假设我们有这张表。Column1 将始终显示。
COLUMN1 COLUMN2 COLUMN3 COLUMN4 COLUMN 5
--------------------------------------------
NAME1 NULL VALUE VALUE NULL
NAME2 VALUE NULL VALUE NULL
NAME3 VALUE VALUE NULL VALUE
始终使用相同的查询并仅更改此WHERE
子句
...WHERE COLUMN1 LIKE 'NAME1';
我想要下一个输出
COLUMN1 COLUMN3 COLUMN4
-------------------------
NAME1 VALUE VALUE
另一个例子:...WHERE COLUMN1 LIKE 'NAME3';
COLUMN1 COLUMN2 COLUMN3 COLUMN 5
-----------------------------------
NAME3 VALUE VALUE VALUE
解决方案
T-SQL:
SELECT COALESCE(column1, column2) from table
它选择 this 的第一个非 null 的值column1 and column2
推荐阅读
- php - Mapbox:如何在 Mapbox 输入搜索自动完成中获取地址值并使用 PHP 在 Mysql 表中插入?
- python - 从另一个嵌套数据类访问嵌套类
- react-native-gifted-chat - React Native Gifted Chat 中的图像纵横比
- c# - 无法在 Azure 中使用相同的帐户在 VS 2019 中发布应用程序
- javascript - 当我从谷歌表格中的开始日期和结束日期创建事件时,日历中的结束日期比前一天
- java - sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 通过 Selenium 和 Java 使用 findElement(By.className())
- javascript - 创建反应本机初始化命令时出错
- apache-pig - 猪脚本查找行仅相差一列
- c# - Acumatica 中的过滤器不遵循行级安全性
- drools - 如何在 Drools 中参数化后时间约束?