首页 > 解决方案 > 使用 WHERE 的 SQL 语句和 2 个相互依赖的列表

问题描述

我有 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),
...

如果你理解我(对不起,我的英语和解释能力真的很差)。谢谢你的任何提示!

标签: mysql

解决方案


您可以尝试如下 -

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') )

推荐阅读