Mysql - 如果不为null则选择distinct

时间:2011-10-30 10:14:34

标签: mysql distinct

我需要让我的客户选择在不同的类别中发布一些同名的帖子。 CMS已关闭,我无法再添加字段...... 有一个备用字段,我可以用它来识别相同的帖子,但我不会在哪种情况下确定帖子会加载(我的情况下的帖子是图片)。

所以我认为我的客户可以为所有相同的帖子指定相同的“字段”。

问题是该字段的默认值为null。如果我将使用distinct,只有一个结果将来自所有不相同的帖子(默认情况下全部= null)...

如果不是null,有没有办法选择不同的“字段”?

我尝试用以上方法查看和试错,但它对我不起作用......

查询本身非常简单......

SELECT id,introtext,publish_up,publish_down 
from #__content 
WHERE catid IN(936,937,940,959,972,988,991) AND state = 1 
  AND ( publish_up = "0000-00-00 00:00:00" OR publish_up <= "2011-10-30 12:12:59" )
  AND ( publish_down = "0000-00-00 00:00:00" OR publish_down >= "2011-10-30 12:12:59" ) 

--removed duplicated query

将欣赏任何线索或方向...... 谢谢! Yanipan

2 个答案:

答案 0 :(得分:2)

select introtext from #__content group by introtext where introtext is not null;

答案 1 :(得分:1)

哪个字段默认为NULL?我将其命名为X,您可以相应地更改它:

SELECT DISTINCT id,introtext,publish_up,publish_down,IFNULL(X,id) AS distinct_field 
from #__content 
WHERE catid IN(936,937,940,959,972,988,991) AND state = 1 
AND ( publish_up = "0000-00-00 00:00:00" OR publish_up <= "2011-10-30 12:12:59" )
AND ( publish_down = "0000-00-00 00:00:00" OR publish_down >= "2011-10-30 12:12:59" ) 

我希望我做对了!