我有一个从一个表中选择用户注册日期的查询。
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/