【问题标题】:Mysql single result from two tables来自两个表的Mysql单个结果
【发布时间】:2017-07-05 03:03:02
【问题描述】:

假设我有两张桌子。 table1(16 行)和 table2(20 行)。

我想使用分页来获取结果,假设每页 10 行。

首先查询从表 1 中返回 10 行,然后从表 1 和表 2 中返回(6+4)总共 10 行,就像这样。

是否有可能在单个 mysql 查询中实现这一点。

谢谢

【问题讨论】:

  • 能否请您发布您到目前为止所尝试的内容?
  • 当第一个表开始返回空数据时,我尝试从第一个表中获取结果,然后我开始从第二个表中获取结果,将第一个表中的最后一个页码保存在代码中,以便从第二个表中获取记录再次从第一页开始.我想知道他们是否有可能在 mysql 单个查询中实现这一点。
  • 为什么投反对票以及谁投反对票

标签: mysql ruby-on-rails ruby pagination


【解决方案1】:

你需要使用联合 它确实允许您组合来自 N 个不同查询的结果。 Here 是来自 mysql 的完整指南。

假设您有 2 个名为 table1table2

的表

table1 有列 id,name,birthday,created_at,age

table2 有列 id,firstname,lastname,created_at,salary

现在假设我们要从两个表中选择 idname (在 table2 中没有 name 列,我们可以结合 firstnamelastname 将其视为名称)

这是你需要做的事情

data = Table1.find_by_sql("(select table1.id , table1.name from table1) UNION (select table2.id, CONCAT(table2.firstname,' ',table2.lastname) as name from table2) limit 10 offset 10")

注意:您也可以在两个查询中使用where 子句来限制您想要的数据

【讨论】:

  • 是的,您可以根据自己的要求进行更改,目的是让您了解如何操作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多