Mysql 根据ID和时间从多个表中进行选择

Mysql 根据ID和时间从多个表中进行选择,mysql,sql,join,inner-join,Mysql,Sql,Join,Inner Join,我试图从多个表中选择数据,但我不确定内部联接是正确的方法。我有两个表,一个表有注释.userid和注释.comment,另一个表有投票.userid,两个表都有时间列 select comments.comment, voted.time, comments.time from voted inner join comments on voted.userid = comments.userid where voted.userid = '12345' order by voted.time

我试图从多个表中选择数据,但我不确定内部联接是正确的方法。我有两个表,一个表有
注释.userid
注释.comment
,另一个表有
投票.userid
,两个表都有
时间

select comments.comment, voted.time, comments.time
from voted
inner join comments on voted.userid = comments.userid
where voted.userid = '12345'
order by voted.time

但是现在我的行在
voted.time
comments.time
中有值,尽管它们应该是分开的。有没有一种方法可以只返回评论或投票,但由用户ID加入并按总时间排序?

根据您所说的,您的筛选和加入逻辑看起来是正确的。只需在select语句中添加/删除您希望/不希望在检索到的数据集中返回的列。

您可以尝试以下操作。如果将其放入视图中,则可以在调用视图时发出订单。也可以在视图调用中执行按用户ID筛选

select 'V' as type, v.userid, v.time from votes v where v.userid = '1234'
union
select 'C' as type, c.userid, c.time from comments c where c.userid = '1234'

问题是,假设我有两条评论和200票。这两条评论在结果集中重复了很多次。在不太了解您的系统的情况下,听起来评论->投票是一种一对多的关系。“多”侧将对每个“一”侧重复。尝试从表中进行“选择*”,看看哪些数据在重复。我不确定你的意思。对于用户X,有2条评论和2次伴随时间,对于同一用户X,有200张投票和200次单独时间。我怎样才能在一个查询中同时得到它们呢?正如@Mevdiven所说的,你可以把它们放在一个视图中。根据具体情况,还可以通过UNION运算符将两个独立的数据集连接起来。“但是我的行在voted.time和comments.time中有值,即使它们应该分开”??查询应返回三个单独的列。你到底在问什么?你想要投票时间还是评论时间?他们中较大的一个?他们越少?