选择与请求的相同ID匹配的多个行

时间:2018-05-16 00:51:22

标签: sql mariadb

我似乎无法找到类似于我想做的事情。

我有多个ID,例如:9044,9044,3832。请注意一些ID可以是相同的。

如果我使用IN来获取此信息,例如:

select `name`, `value`, item_id
from items
where item_id IN (9044,9044,3832) and tradeable = 1

即使我要求3,也只会返回两个结果:

enter image description here

即使商品ID相同,如何修改我的查询以匹配所请求的商品数量?感谢

2 个答案:

答案 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;