一个简单的问题,一直在轰炸我的脑袋。
我有以下两个问题:
select * from alm_existencias_almacen where id_warehouse = 3
select * from alm_existencias_almacen where id_warehouse = 8
我希望获得仓库3中但不在仓库8中的项目的结果,而不是仓库8中的项目,而不是仓库3中的项目。
事情是物品可能在两件商品中我可能会遇到以下情况:
id_warehouse id_color id_design
---------------------------------
8 RED STYLISH
3 RED NEW_AGE
所以在这种情况下我想检索一个空集。
如果它只是在商品8中,它将仅返回第3行中的第一行和相反的行。
这看起来很简单,但我一直都是这样,没有结果。我试过
select *
from alm_existencias_almacen
where id_color not in (select *
from alm_existencias_almacen
where id_almacen = 3)
and id_design not in (select *
from alm_existencias_almacen
where id_almacen = 3)
and id_almacen = 8;
但是发生错误。
提前致谢
答案 0 :(得分:1)
你说得对,这很容易。
在wh 3中但不在8中,基于id_color:
select * from alm_existencias_almacen where id_warehouse = 3
and id_color not in
(select id_color from alm_existencias_almacen where id_warehouse = 8)
答案 1 :(得分:1)
您可以使用设置操作Except
仓库3中但不在仓库8中的物料的结果
select * from alm_existencias_almacen where id_warehouse = 3
EXCEPT
select * from alm_existencias_almacen where id_warehouse = 8
谁是商品8而不是商品3
select * from alm_existencias_almacen where id_warehouse = 8
EXCEPT
select * from alm_existencias_almacen where id_warehouse = 3