我有一个查询,从一个表中选择用户的注册日期。

SELECT DATE(registered)
FROM users
WHERE user_id= ".$currentUser."
ORDER BY registered ASC
LIMIT 1


我需要通过联接另一个表来修改原始查询,以确保用户不在该第二个表(“访问”)中,该第二个表中的成员ID低于特定值且访问日期低于特定日期。

LEFT JOIN access ON (users.user_id = access.user_id)
WHERE access.user_id < 500
AND access.date ... after March 1, 2012


不确定如何将两者结合在一起。

最佳答案

您可以使用相关子查询,例如:

  SELECT DATE(u.registered)
    FROM users u
   WHERE u.user_id = ".$currentUser."

     AND NOT EXISTS (
             SELECT 1
               FROM access a
              WHERE u.user_id = a.user_id
                AND a.user_id < 500
                AND a.date > DATE '2012-03-01')

ORDER BY registered ASC
LIMIT 1;


一些注意事项:
即使access表中没有匹配的行,您仍然会返回一行。
您可能知道... ASC是默认的排序顺序,因此您无需键入它。

关于mysql - 从一个表中选择用户,而不在另一个表中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9552441/

10-16 15:29