Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.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 当另一个对应列为空时,筛选出某些列_Mysql_Sql - Fatal编程技术网

Mysql 当另一个对应列为空时,筛选出某些列

Mysql 当另一个对应列为空时,筛选出某些列,mysql,sql,Mysql,Sql,仅当AA、BB或CC不为空时,我想从行中选择A、B或C 因此,结局将会出现: 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

因此,结局将会出现:

Name    A       B        C         AA   BB  cc
--------------------------------------------------------
Name1   Data1   n       Data3       3   n   15
Name2   n       Data2   Data4       n   2   8
你的意思是喜欢使用:


其中
过滤整行。如果只想省略某些列,而保留其余的列,那么事情就会变得棘手。您可以通过基于
IF(condition,true,false)
函数定义列来接近这一点。如果您通读他的示例,他希望
???
的where子句具有某种列粒度。在示例1中,名为1的行出现在所需的结果集中,但只复制列A,因为BB失败且不为NULL,CC大于10。这似乎是使用IF()定义SELECT列的一个难题或用例。我不知道
CASE
以下是我根据您的帮助提出的解决方案,以防任何人需要:选择
Name
,签名时的CASE(
AA
)>0然后
A
结束,签名时的CASE(
BB
)>0然后
B
END B,签名时的CASE(
CC
)>0,然后从表中选择
C
结束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;
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