我正在使用支持MySQL和SQLite的前端。使用SQLite在JOIN中進行MySQL查詢
但是,我正在運行的其中一個查詢已加入UPDATE部分。在谷歌搜索之後,這在SQLite中不受支持。
查詢是這樣的:
UPDATE playertimes t
LEFT JOIN
(SELECT MIN(time) mintime,
MAP,
track,
style
FROM playertimes
GROUP BY MAP,
track,
style) minjoin ON t.time = minjoin.mintime
AND t.MAP = minjoin.MAP
AND t.track = minjoin.track
AND t.style = minjoin.style
JOIN
(SELECT ((50.0 * 2) * 1.5) points) best
JOIN
(SELECT (COUNT(*) * (2/10.0)) points,
MAP,
track,
style
FROM playertimes
GROUP BY MAP,
track,
style) additive ON t.MAP = additive.MAP
AND t.track = additive.track
AND t.style = additive.style
JOIN
(SELECT MIN(time) lowest, (MIN(time)/15.0) points,
MAP,
track,
style
FROM playertimes
GROUP BY MAP,
track,
style) FINAL ON t.MAP = FINAL.MAP
AND t.track = FINAL.track
AND t.style = FINAL.style
JOIN
(SELECT (1.0) style, (1.0) track) multipliers
SET t.points = (CASE
WHEN minjoin.mintime IS NOT NULL THEN (((best.points + additive.points + FINAL.points) * multipliers.style) * multipliers.track)
ELSE (((((best.points + additive.points + FINAL.points) * multipliers.style) * multipliers.track) * (FINAL.lowest/t.time)) * 0.85)
END)
WHERE t.MAP = 'bhop_atom'
AND t.track = 0
AND t.style = 0;
錯誤:
near "t": syntax error
(我知道它像multipliers
選擇一些地方看起來他們並沒有什麼意義,在SQL級別的事,但我計劃改變這些動態很快,其中一些部分實際上被替換爲我前端的變量)
我的目標是讓這個查詢的最終結果在只有一個初始查詢(子查詢很好)。我怎樣才能實現它?如果最終查詢與MySQL不兼容,那麼這很好,因爲我正在讓應用程序爲MySQL或SQLite發送不同的查詢,以防它們不兼容。
注意:結果與我希望這些查詢在MySQL上運行時一樣。
不幸的是,情況並非如此。 '接近「左」:語法錯誤' – shavit