如何消除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”中列出所有字段,我可以得到期望的结果。但查询字符串太长。