gpt4 book ai didi

sqlite - SQL访问优化

转载 作者:行者123 更新时间:2023-12-01 16:24:19 25 4
gpt4 key购买 nike

所以,我有 2 个表:

items (id INTEGER PRIMARY KEY, imgurl text, defindex int, name text),
prices (id INTEGER PRIMARY KEY, defindex int, quality int, effect int, currency text, price real)

如果我需要查找商品的名称、价格和效果名称,我会执行 2 个查询:

SELECT currency, price from prices where defindex = :def and effect = :eff and quality = :qua
SELECT name, imgurl from items where defindex = :def

我想用1个查询替换它,但问题是有时有没有价格的项目,所以defindex 202存在于项目中,但不存在于价格中,所以

select prices.currency, prices.price, items.name, items.imgurl from items,prices where items.defindex = :def and prices.defindex = :def and prices.quality = :qua and prices.effect = :eff

不会工作。 如何将其合并为一个查询而不使其变慢?

最佳答案

这称为外连接像这样的东西

Select i.name, i.imgurl, p.currency, p.price 
from items
left join prices on i.defindex = p.defindex
Where i.defindex = :def and effect = :eff and quality = :qua

请注意,这将是所有商品和价格(如果有达到该效果和质量的商品)。

修改后的版本

Select i.name, i.imgurl, p.currency, p.price 
from items
left join prices p on i.defindex = p.defindex and p.effect =:eff and p.quality = :qua
Where i.defindex = :def

当没有匹配的价格效果和质量将为空时,我最初尝试的 where 子句将它们删除。抱歉。

关于sqlite - SQL访问优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21338753/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com