我似乎无法找到类似于我想做的事情。
我有多个ID,例如:9044,9044,3832。请注意一些ID可以是相同的。
如果我使用IN来获取此信息,例如:
select `name`, `value`, item_id
from items
where item_id IN (9044,9044,3832) and tradeable = 1
即使我要求3,也只会返回两个结果:
即使商品ID相同,如何修改我的查询以匹配所请求的商品数量?感谢
答案 0 :(得分:1)
在SQL IN
中是一个集合运算符。 SQL优化器执行的首要任务之一是删除 set 中的重复元素,因为拥有多个等效值没有意义。
如果你真的想要获得三行,你可以尝试类似:
select name, value, item_id from items where item_id = 9044 and tradeable = 1
union all
select name, value, item_id from items where item_id = 9044 and tradeable = 1
union all
select name, value, item_id from items where item_id = 3832 and tradeable = 1;
答案 1 :(得分:1)
一般解决方案是使用left join
:
select i.name, i.value, ii.item_id
from (select 9044 as item_id union all
select 9044 union all
select 3832
) ii left join
items i
on i.item_id = ii.item_id and i.tradeable = 1;