我有这个查询,用于设置用户当前旅行的ID(如果它在当前日期之内)。这适用于正在进行实际旅行的所有用户。问题是,有些人没有旅行,所以我希望他们改而NULL
。
UPDATE vc_user u
LEFT JOIN vc_trip t ON t.user_id=u.id
SET u.c_current_trip=t.id
WHERE t.date_start <= :date AND t.date_end >= :date
我了解到查询只会在日期在范围内时运行,但是我无法解决如何实际编写查询来为没有查询权限的用户设置NULL
的问题。旅途继续。
答案 0 :(得分:1)
对join子句使用日期条件,如下所示: 当您在左/右联接中使用where子句时,其作用类似于内部联接,因此要从左或右表获取所有行,您需要在联接上指定其他子句
UPDATE vc_user u
LEFT JOIN vc_trip t ON t.user_id=u.id and t.date_start <= :date AND t.date_end >= :date
SET u.c_current_trip=t.id