簡體   English   中英

如何重寫具有聯接的子查詢的SQL查詢

[英]How to rewrite SQL query that has subquery with joins

我有一個SQL查詢,該查詢具有一個已聯接的子查詢。 我想重寫查詢而沒有子查詢,以便可以創建視圖。 MySQL不允許FROM子查詢中的SELECT語句。

這可能嗎? 我試着刪除外部選擇,並在subs查詢內部移動組。 這部分起作用,但是某些數據不正確。

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

提前致謝!

是否簡單如:

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

將您的group by子句更改group by r.id進行group by r.id 由於您是從派生表(子查詢)中選擇的,因此數據庫無法判斷派生表中只有一個“ id”字段-它只能看到子查詢中指定的列標題,即r.id

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM