使用带有2个列表的WHERE的SQL语句,彼此依赖

时间:2019-03-08 11:34:22

标签: mysql

我有2个巨大的产品和规格表,假设我需要获取/更新其中的40个。我正在尝试使用

之类的列表

first list->row == second list->row

我的SQL看起来像这样

SELECT * FROM product JOIN specification ON product.id_product = spceification.product_id WHERE product.id_product IN (1592,1593,16062,1615)
 AND specification.suffix IN ('E-150','E-100','0-PLUS',NULL)

现在,它返回许多结果,因为其他一些具有不同ID的产品都有此后缀。所以我只需要退货:

1592 + E-150,
1593 + E-100,
16062 + 0-PLUS,
1615 + NULL

基本上,我需要这样的内容(如下),但是我可以用2个列表来做到这一点(下面的解决方案也不起作用,它有某种错误):

SELECT * FROM product JOIN specification.product_id = product.id_product WHERE 
(product.id_product = 1592 AND specification.suffix = E-150),
(product.id_product = 1593 AND specification.suffix = E-100),
...

如果您理解我(对不起,我的英语说得真的很差,并且会说英语)。谢谢您的提示!

2 个答案:

答案 0 :(得分:0)

您可以尝试以下操作-

select * from 
(
SELECT * FROM product JOIN specification 
ON product.id_product = spceification.product_id 
WHERE product.id_product IN (1592,1593,16062,1615) AND specification.suffix IN ('E-150','E-100','0-PLUS',NULL)
)A WHERE (id_product, suffix) IN ( (1592 , 'E-150'), (1593 ,'E-100') )

答案 1 :(得分:0)

您的第二个查询几乎是正确的。你在那里很近:)

尝试通过OR更改逗号

SELECT * FROM product JOIN specification.product_id = product.id_product WHERE 
(product.id_product = 1592 AND specification.suffix = E-150) OR
(product.id_product = 1593 AND specification.suffix = E-100)