我的MySql查询存在问题。你可以帮帮我吗?
我有一个如上图所示的数据库,并且有属于每个用户的用户标识。它应按类型降序排序。它使用PHP time()函数记录时间,该函数在当时写入数据库中的datetime单元格。但是,我使用的SQL查询给出了一个结果,如下图所示:
SELECT
user.username,
kim.userid,
kim.subject,
count(kim.userid),
max(kim.dateline),
max(kim.rateid)
FROM test as kim
INNER JOIN user
WHERE user.userid = kim.userid
GROUP BY kim.userid limit 10)
虽然我得到了正确的结果,但由于rateid没有显示正确的主题,我仍然有一点问题。所以,我一直在寻找它两天,我认为有一个我不明白或看不到的问题。
正确的查询应该像下图中的on:
如果你帮忙,我感激不尽!
答案 0 :(得分:1)
您正尝试从具有最大rateid的行获取信息以及汇总信息。为此,您需要加入原始表:
select kim.userid, u.username, kim.cnt, kim.maxdate, kim.maxrate, t.subject
from (SELECT kim.userid, count(kim.userid) as cnt,
max(kim.dateline) as maxdate, max(kim.rateid) as maxrate
FROM test kim
GROUP BY kim.userid
limit 10
) kim INNER JOIN
user u
on u.userid = kim.userid join
test t
on kim.userid = t.userid and
kim.maxrate = t.rateid
这会找到每个用户的最大值,然后加入表格以获得该费率的主题。您的maxdate
列似乎就是您想要的。如果您想要maxrate
的日期,那么您可能还想从t
获取该日期。
答案 1 :(得分:0)
试试这个
Select user.username, kim.userid ,kim.subject, count(kim.userid), max(kim.dateline),
max(kim.rateid)
from test as kim
left join user ON user.userid = kim.userid group by kim.userid limit 10
答案 2 :(得分:0)
感谢您的关注,
我找到了解决问题的方法。解决方案应该是这样的:
SELECT subject FROM test WHERE userid=user.userid ORDER BY dateline desc LIMIT 1) AS subject, (SELECT COUNT(*) FROM test WHERE userid=user.userid) AS adet FROM user limit 10