Mysql 内部联接限制第二个表中的行

Mysql 内部联接限制第二个表中的行,mysql,sql,Mysql,Sql,有两个表查询和事务,一个事务可以有多个查询。我想获取10个事务的查询列表。我尝试了此查询,但这限制了总行数 SELECT t.tid , q.id , q.timestamp , q.domain , q.health , q.alexa_rank , q.destination , t.age , t.sb_isValid , t.userResponse , t.suggestion f

有两个表
查询
事务
,一个事务可以有多个查询。我想获取10个事务的查询列表。我尝试了此查询,但这限制了总行数

SELECT t.tid
     , q.id
     , q.timestamp
     , q.domain
     , q.health
     , q.alexa_rank
     , q.destination
     , t.age
     , t.sb_isValid
     , t.userResponse
     , t.suggestion 
  from queries q 
  join transactions t 
    on q.id like concat(t.tid, '%') 
 where t.uid = '115800979895438175088' 
 order 
    by t.time DESC
     , tid 
 limit 10
此查询返回10行,包括查询和事务,但我希望其查询包含10个事务


如果有10个事务,每个事务有3个查询,那么它应该返回30+10=40行,但只返回10行。

在子查询中选择10个事务:

select *
from
(
  select *
  from transactions
  order by time desc
  limit 10
) t
join queries q on q.id like concat(t.tid, '%')
order by t.time desc, t.tid, q.timestamp desc;

选择子查询中的十个事务:

select *
from
(
  select *
  from transactions
  order by time desc
  limit 10
) t
join queries q on q.id like concat(t.tid, '%')
order by t.time desc, t.tid, q.timestamp desc;

您想要哪些交易?有最近查询的十个事务?旁注:不使用适当的外键链接两个表,而是依赖子字符串,这是一个非常糟糕的数据设计。如果可以,请更改此设置。您正在运行哪个MySQL版本?我想获取最后10个事务及其查询,感谢您的建议,但现在对表进行任何更改都为时已晚。“太晚了,无法进行任何更改”通常指“我们只运行这个系统几周,所以现在进行更改是不值得的。”这听起来像是一个好的决定。如果这意味着“我们将在很长一段时间内运行这个系统,但是进行更改会感到很不方便,我们宁愿继续缓慢地运行这个系统,并且容易出错,这听起来像是一个错误的决定。您想要哪些交易?有最近查询的十个事务?旁注:不使用适当的外键链接两个表,而是依赖子字符串,这是一个非常糟糕的数据设计。如果可以,请更改此设置。您正在运行哪个MySQL版本?我想获取最后10个事务及其查询,感谢您的建议,但现在对表进行任何更改都为时已晚。“太晚了,无法进行任何更改”通常指“我们只运行这个系统几周,所以现在进行更改是不值得的。”这听起来像是一个好的决定。如果这意味着“我们将在很长一段时间内运行这个系统,但是进行更改会感到很不方便,我们宁愿继续缓慢地运行这个系统,并且容易出错,这听起来像是一个错误的决定。它起作用了,但结果不是降序的,然后更改
ORDER BY
子句。(我也相应地更新了我的答案。
t.time
不在您最初的请求中,因此我制定了一个适当的
orderby
子句。)它起作用了,但结果不是按降序排列,然后更改
orderby
子句。(我也相应地更新了我的答案。
t.time
不在您最初的请求中,因此我制定了一个适当的
orderby
子句。)