我正在使用php和mysql作为后端在约会网站上工作。我有两张桌子。第一个表是用户表,其中将存储所有用户信息,而其他表是visituser表,其中如果一个用户查看另一个用户配置文件,则在visituser表中将有一个条目。每当一个用户访问另一个用户配置文件时,访问者表中就会有一个条目。一个用户访问另一个用户将有多个条目。我的问题是我要用最近的访问日期向访问者展示一次。我的查询在下面给出=>
SELECT
a.*, b.onlinestatus,
b.username,
b.age
FROM
tbl_visitprofile a
LEFT JOIN tbl_user b ON a.visitorid = b.id
WHERE
b. STATUS != '2'
AND a.visitmemberid = '10'
AND a.visitorid NOT IN (
SELECT
user_id
FROM
tbl_pauseusers
)
AND a.blockstatus = '0'
GROUP BY
a.visitorid
ORDER BY
a.id DESC
LIMIT 0,
12
如果我在此查询中没有使用该组,那么我将获得最新的访问条目,但如果我正在使用组,那么我没有获得最新的访问条目。我搜索了很多,但没有找到我的答案。任何帮助将不胜感激。提前致谢
答案 0 :(得分:0)
您可以使用MAX
组功能实现此目的。我已经清理了一下查询,但从根本上说,这应该保留你以前的逻辑,同时稍微更优化一下。只需更改表中日期时间字段的a.date_time即可。
SELECT
a.visitorid,
MAX( a.date_time ) AS last_visit_date_time,
b.onlinestatus,
b.username,
b.age,
FROM tbl_visitprofile a
INNER JOIN tbl_user b
ON b.id = a.visitorid
AND b.STATUS != '2'
LEFT JOIN tbl_pauseusers p
ON p.user_id = a.visitorid
WHERE a.visitmemberid = '10'
AND a.blockstatus = '0'
AND p.user_id IS NULL
GROUP BY a.visitorid
ORDER BY last_visit_date_time DESC
LIMIT 0 , 12;
这将按上次访问的日期/时间排序记录,并返回最新的12.