我有一个包含三个JOINS
的查询,其中涉及两个子查询。
SELECT TK.id, TK.idtype,
TK.twitter, TK.hive,
TK.discord, TK.name,
TK.description, TK.maxSupply,
TK.symbol, TK.idTbGallery,
TK.active, t1.*, t3.* FROM tb_tokensupply t1
JOIN (SELECT idToken, MAX(datetime) datetime FROM tb_tokensupply GROUP BY idToken) t2 ON t1.idToken = t2.idToken AND t1.datetime = t2.datetime
JOIN tb_tokens TK ON TK.id = t2.idToken
JOIN (SELECT MAX(price), MIN(price) FROM tb_tokensprice) t3 ON t1.idToken = t3.idToken
WHERE TK.id=84 AND TK.active = 1
这个查询给了我以下错误:
错误1054:t3。idToken on子句未知。
但是,下面的查询可以工作:
SELECT MAX(price), MIN(price) from tb_tokensprice WHERE idToken = 84
谁能帮助找出为什么相同的查询内JOIN
不工作?
谢谢你的帮助。
错误告诉您问题所在:">t3。idToken on子句未知"因为你没有把它带进你的选择中。更新t3"子查询如下:
(SELECT MAX(price), MIN(price), idToken FROM tb_tokensprice GROUP BY idToken) t3
SELECT MAX(price), MIN(price) from tb_tokensprice WHERE idToken = 84
工作的原因是因为WHERE
子句是使用">tb_tokenprice"表。
另一方面,更大的查询只使用">tb_tokenprice"计算MAX
和MIN
,然后只返回这两个字段,您将没有对">idToken"的引用。