mysql - 当另一个对应列为空时过滤掉某些列

标签 mysql sql

Name    A       B        C         AA   BB  cc
--------------------------------------------------------
Name1   Data1   n       Data3       3   n   15
Name2   n       Data2   Data4       n   2   8

只有当 AA、BB 或 CC 不为空时,我才想从一行中选择 A、B 或 C。

所以结尾会出现:

select Name, A,B,c from table where ??? AA<10 and BB<10 and CC<10
^I know this is dumb, just to help you understand my goal.

Name   A      B      C
-------------------------
Name1 Data1
Name2        Data2 Data4

另一个例子:

select Name, A,B,c from table where ??? AA<5 and BB<5 and CC<5
^I know this is dumb, just to help you understand my goal.

Name   A      B      C
-------------------------
Name1 Data1
Name2        Data2

再举个例子,踢球:

select Name, A,B,c from table where ??? AA<3 and BB<3 and CC<3
^I know this is dumb, just to help you understand my goal.

Name   A      B      C
-------------------------
Name2        Data2

感谢阅读!

这是我根据您的帮助得出的解决方案,以备不时之需:

SELECT `Name`,
CASE
    WHEN SIGN(`AA`)>0
    THEN `A`
END A,
CASE
    WHEN SIGN(`BB`)>0
    THEN `B`
END B,
CASE
    WHEN SIGN(`CC`)>0
    THEN `C`
END C,
FROM TABLE;

最佳答案

你的意思是喜欢用IS NOT NULL :

select Name, A,B,c from table where 
    AA IS NOT NULL AND BB IS NOT NULL 
    AND CC IS NOT NULL

SELECT Name, 
CASE WHEN AA IS NOT NULL 
    THEN A ELSE NULL AS acol,
CASE WHEN BB IS NOT NULL
    THEN B ELSE NULL AS bcol,
CASE WHEN CC IS NOT NULL
    THEN C ELSE NULL AS ccol
FROM table WHERE your_other_conditions

关于mysql - 当另一个对应列为空时过滤掉某些列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18295852/

相关文章:

mysql - InnoDB 中的 'update tokens set tokens = tokens + 1' 是原子的吗?

java - 从表中的复选框获取选中的行

mysql - 一个站点 : multiple clients : how to organize

MySQL 将行转为动态数量的列

sql - pyodbc - 插入选定的行( Access mdb)

mysql - MySQL 查询出错

mysql - 如何在phpMyAdmin上导入需要300s以上的大sql文件?

sql - SQL条件插入

sql - 为什么 PostgreSQL 不在小表上使用我的索引?

sql - 如何编写从 SQL 数据库返回值的 Excel 函数?