我有一个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
提前致谢!
答案 0 :(得分:1)
是否如此简单:
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 :(得分:0)
将group by
子句更改为group by r.id
。由于您从派生表(子查询)中进行选择,因此db无法判断该派生表中只有一个“id”字段 - 它只能看到子查询中指定的列标题,即{{1 }}