如何让这个mysql查询包含空值?

时间:2009-06-26 01:19:33

标签: mysql

我正在编写修剪脚本,删除我网站上一周前上传的内容,并在上周访问了0或1次。

有2个表:

  • daily_hits - 存储项目ID,日期和项目在该日期获得的点击次数。
  • 视频 - 存储实际内容

我想出了这个。

$last_week_date = date('Y-m-d',$now-(60*60*24*7));
$last_week_timestamp = $now-(60*60*24*7); 

SQL

SELECT 
            vid_id, 
            COALESCE(sum(hit_hits),0) as total_hits 
        FROM videos
        LEFT JOIN daily_hits
            ON vid_id = hit_itemid 
        WHERE (hit_date >= '$last_week_date') AND vid_posttime <= '$last_week_timestamp' 
        GROUP BY hit_itemid 
        HAVING  total_hits < 2 

这会输出上周访问过一次的项目....但不会输出那些根本没有访问过的项目。如果上周没有访问任何项目,则daily_hits表中不会有任何条目。我认为COALESE应该照顾它,但那没有用。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

total_hits&lt; 2

这保证“空命中”不会出现。

创建第二个查找空值的查询(它将显示来自daily_hits中没有相应键的视频的记录)。

创建UNION查询以将两个数据集显示为一个。

答案 1 :(得分:0)

 HAVING  total_hits < 2 or total_hits is null