我有这个查询
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
说明:如果(IsPurchased == 0)尚未购买我的客户
我的问题:如果您查看IsPurchased = 1的行时间,则时间范围与IsPurchases = 0中的时间冲突。我如何比较和得出结论,查询的同一日期的时间与其他行的时间和日期相冲突。 “冲突”字段名称中的结果可能是1或0
希望你明白这一点。谢谢你的帮助!!!
答案 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 ;
这只是一个想法,它对我有用了好几次。