首页 文章

如何重写具有连接子查询的SQL查询

提问于
浏览
1

我有一个SQL查询,其子查询具有连接 . 我想在没有子查询的情况下重写查询,以便我可以创建一个视图 . MySQL不允许SELECT语句,其中FROM是子查询 .

这可能吗?我已经尝试删除外部选择并在子查询中移动组 . 这部分有效,但有些数据不正确 .

select *
from (SELECT r.id, r.dateAdded, r.listingId, r.rating, r.username, r.valid, tbl_data.nameShort, tbl_data.desk, d.model, d.hardware, d.serial, l.appVersion, r.photoUrl, r.comment
      FROM tbl_ratings r
      JOIN tbl_data on r.listingId = vi_data.id
      JOIN tbl_devices d on r.serial = d.serial
      JOIN tbl_log l on l.serial = d.serial
      ORDER BY d.serial, l.dateAdded DESC) x
group by id
order by dateAdded DESC

提前致谢!

2 回答

  • 0

    它是如此简单:

    SELECT     r.id, r.dateAdded, r.listingId, r.rating, r.username, r.valid,
               tbl_data.nameShort, tbl_data.desk, d.model, d.hardware,
               d.serial, l.appVersion, r.photoUrl, r.comment
          FROM tbl_ratings r
          JOIN tbl_data on r.listingId = vi_data.id
          JOIN tbl_devices d on r.serial = d.serial
          JOIN tbl_log l on l.serial = d.serial
          GROUP BY r.id
          ORDER BY r.dateAdded DESC
    

    此外,您有一个“ vi_data ”的引用,它不是查询中的任何其他位置

  • 1

    group by 子句更改为 group by r.id . 因为你告诉那个派生表中只有一个"id"字段 - 它只能看到子查询中指定的列 Headers ,即 r.id .

相关问题