正如标题所述,MySQL Workbench正在报告错误。据我所知,错误是软件造成的,而不是MySQL造成的。但是,由于它在我的网站上不起作用,因此阻止了我对代码进行错误修复。
最初,我使用了此查询,该查询工作得很好,但速度非常慢,因为它在内部联接内部具有选择功能。
SELECT *
FROM modeller AS m
INNER JOIN
bilder AS b ON b.ID = (
SELECT ID FROM bilder AS b2
WHERE b2.modellID = m.id
ORDER BY filnavn
DESC LIMIT 1
)
order by m.fornavn
所以我一直在寻找替代品,最后得到了这个:
SELECT *
FROM (
SELECT p.*,
m.*,
row_number() over (partition by m.id order by filnavn desc) rono
FROM modeller AS m
INNER JOIN bilder AS B
on B.modellID= m.ID
) x
WHERE x.rono = 1
该查询应该执行的操作是通过3D模型数据库(“ modeller”)查找并在表“ bilder”中获取添加到该模型的最新图片。这是一对多的连接,bilder将modellID作为一列,它对应于modeller中的ID。
相反,我得到了错误
SELECT is not valid at this position for this server version, expecting : '(', WIDTH
任何提示或建议都会受到赞赏,尤其是不仅可以规避工作台错误,而且可以改善我的初始查询。
答案 0 :(得分:0)
您可以尝试的替代方法是:
SELECT *
FROM modeller AS m
INNER JOIN (
SELECT model1ID, MAX(filnavn) AS filnavnMax
FROM bilder
GROUP BY model1ID
) AS maxVals
ON m.id = maxVals.model1ID
INNER JOIN bilder AS b
ON maxVals.model1ID = b.model1ID AND maxVals.filnavnMax = b.filnavn
ORDER BY m.fornavn
;
但是,如果filnavn对于model1ID不是唯一的,则最终结果可能比返回的原始查询更多。但是,在这种情况下,您的原始查询可能会提供不一致的结果(因为不能保证当多于一个具有最高filnavn的行时,从原始子查询返回的ID会保持一致)