MySQL JOIN查询结果异常:按collection_id获取最低listing_price出错
问题解决
你的查询结果不正确的核心原因是WHERE条件写错了——你要查询的是collection_id='18',但SQL里写成了ni.collection_id = '1',导致过滤出的是collection_id为1的NFT数据,而非目标的18。
你的表关联逻辑是正确的,nft_sell_info.nft_id与nft_info.id的关联关系没问题。
修正后的SQL语句如下:
SELECT MIN(ns.listing_price) AS lowest_price FROM `nft_info` `ni` JOIN `nft_sell_info` `ns` ON `ns`.`nft_id` = `ni`.`id` WHERE `ni`.`collection_id` = '18'
执行这条语句就能得到collection_id=18对应的最低listing_price(即15)。
如果担心存在部分NFT没有对应的售卖信息,可以改用LEFT JOIN并过滤空值,确保结果准确:
SELECT MIN(ns.listing_price) AS lowest_price FROM `nft_info` `ni` LEFT JOIN `nft_sell_info` `ns` ON `ns`.`nft_id` = `ni`.`id` WHERE `ni`.`collection_id` = '18' AND ns.listing_price IS NOT NULL
内容的提问来源于stack exchange,提问作者Julia
相关产品推荐
相关产品推荐

