我是MySQL的新手,我找不到任何解决此问题的方法。我很感激所有的帮助。
我有表A和表B相互关联。我希望从表A中选择并按表B的“日期”列生成结果顺序。这2个表由'user_id'链接。我的表格如下:
Table A:
...
name
user_id (link to table B)
Table B:
user_id
date
有可能吗?再次感谢您的帮助!
答案 0 :(得分:1)
您想要进行内部联接。类似的东西:
Select A.user_id, A.name, B.date from A
INNER JOIN B ON B.user_id = A.user_id
WHERE (whatever your filtering is)
ORDER BY B.date
你应该对加入进行一些研究,因为它对于数据库开发来说是一个非常重要和重要的事情(并且了解它有助于构建良好的架构)。
它的要点是,对于A中的每个user_id,我想在B中找到匹配的user_id(因为行INNER JOIN B ON B.user_id = A.user_id)。内连接只会带来匹配,所以如果A的ID为2,但B中没有ID,则不会返回记录(类似于B中没有记录的记录)。
现在,需要注意的一点是,如果我在A中有一条记录,用户ID为5,但B中有两条记录,用户ID为5,则内部联接返回两条记录,每条记录加入A数据B数据。
现在,正如您对此问题的评论所要求的那样,您想要获得更高的评分,您需要最大的功能。
Select A.user_id, A.name, B.date, Max(B.rating) from A
INNER JOIN B ON B.user_id = A.user_id
WHERE (whatever your filtering is)
GROUP BY A.user_id
ORDER BY B.date
这有两个部分,聚合函数Max()和Group By语句。它们一起工作,以便对于每个唯一的A.user_id,数据库将返回具有最高B.rating的记录集。你也可以使用相反的Min()函数,选择最低的B.rating,或Count()来计算记录的出现次数,或者Sum()将把该列的记录加在一起。
与数据库查询一样,使用它们,确保返回正确的数据并了解原因。当我构建查询时,我通常从select * from table开始,找出我需要加入的内容,验证我的记录看起来好的方式,然后开始限制列和过滤事物。您的里程可能因方法而异,但验证数据总是一个好主意。
答案 1 :(得分:0)