MySQL Query:使用条件语句查询

时间:2009-12-09 07:56:47

标签: mysql

我有这个查询

SELECT 
IF(isnull(ub.user_lecture_id), 0, ub.user_lecture_id) as  IsPurchased,
cs.title,cs.start_date, cs.start_time, cs.end_time 
FROM campus_schedule cs 
LEFT JOIN campus_bookinfo cb ON cs.bookid=cb.idx_campus_bookinfo 
LEFT JOIN user_lectures ub ON ub.id_product = cs.idx_campus_schedule AND ub.id_customer = 11 
WHERE cs.idx_campus = 1 and cs.title like '%%' and cs.status=1

显示: Click to view Output

说明:如果(IsPurchased == 0)尚未购买我的客户

我的问题:如果您查看IsPurchased = 1的行时间,则时间范围与IsPurchases = 0中的时间冲突。我如何比较和得出结论,查询的同一日期的时间与其他行的时间和日期相冲突。 “冲突”字段名称中的结果可能是1或0

希望你明白这一点。谢谢你的帮助!!!

2 个答案:

答案 0 :(得分:1)

要比较时间,您会发现使用DATETIME字段更容易。

要检查“冲突”行,您可能需要在WHERE子句中包含子查询。

答案 1 :(得分:1)

子查询应该可以工作,但在mysql中效率低下。您应该创建临时表并进行分析。或者做同样的内联,例如:

set @lastdate=0;
set @lasttime=0;

select IsPurchased, title, start_date, start_time, end_time, if(@lastdate = start_date, @lasttime < end_time, 1) as CONFLICT, @lastdate:=start_date, @lasttime:=start_time
from (your_query ORDER BY start_date, start_time, end_time) t ;

这只是一个想法,它对我有用了好几次。