Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/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查询中的空值_Mysql - Fatal编程技术网

如何消除MySQL查询中的空值

如何消除MySQL查询中的空值,mysql,Mysql,这是我的疑问: SELECT `date`, MAX(IF(`index_name` = 'Alerian MLP PR USD' AND `time_period`='M1', results, NULL)) AS `Alerian MLP PR USD`, MAX(IF(`index_name` = 'MSCI EAFE Mid NR USD' AND `time_period`='M1', results, NULL)) AS `MSCI EAFE Mid NR USD` FR

这是我的疑问:

SELECT
  `date`,
  MAX(IF(`index_name` = 'Alerian MLP PR USD' AND `time_period`='M1', results, NULL)) AS `Alerian MLP PR USD`,
  MAX(IF(`index_name` = 'MSCI EAFE Mid NR USD' AND `time_period`='M1', results, NULL)) AS `MSCI EAFE Mid NR USD`
FROM
  `mst_ind`
GROUP BY `date`
问题是它返回多个空值,如

我可以将该查询封装在另一个查询中,如

SELECT * FROM (
SELECT
  `date`,
  MAX(IF(`index_name` = 'Alerian MLP PR USD' AND `time_period`='M1', results, NULL)) AS `Alerian MLP PR USD`,
  MAX(IF(`index_name` = 'MSCI EAFE Mid NR USD' AND `time_period`='M1', results, NULL)) AS `MSCI EAFE Mid NR USD`
FROM
  `mst_ind`
GROUP BY `date`
) sel
WHERE sel.`MSCI EAFE Mid NR USD` IS NOT NULL AND sel.'Alerian MLP PR USD' IS NOT NULL
但这不是一个好的解决方案,因为我必须在“notnull”子句中列出所有字段

这里有没有更简单的消除空值的方法


谢谢

您希望看到什么而不是
NULL
s?比30个“NOT NULL”字段组成的字符串还要短。我的意思是,您希望在结果集中看到什么,而不是在查询中看到什么。在当前查询中,您过滤掉所有具有
MSCI EAFE Mid NR USD
索引值的行,因为您在这些日期没有
Alerian MLP PR USD
索引值。这是期望的结果吗?对不起,我没有首先理解你的问题。是的,没错。如果该日期没有索引值,我不需要任何空值。如果我在WHERE子句“NOTNULL”中列出所有字段,我可以得到期望的结果。但查询字符串太长。