我试图围绕一个问题包围我的大脑,并希望你可以提供帮助.我有两个表:customer_table和product_table,看起来像这样
name sku_num1 sku_num2 sku_num3 sku_num4
----------------------------------------------------
Bob A B C D
Frank E A
Tom G
Shelly G E
Justin E G A
sku_num widget_name
-------------------
A widget_a
B widget_b
C widget_c
D widget_d
Run Code Online (Sandbox Code Playgroud)
所以我想要做的是返回所有客户的清单,这些客户至少有一个产品的SKU出现在产品表中.因此,根据上述信息,我会收到回复的记录
短发
坦率
贾斯汀
任何想法如何做到这一点?
有没有必要加入一个表两次:
SELECT *
FROM customers
WHERE sku_num1 IN (SELECT sku_num
FROM product_table)
OR sku_num2 IN (SELECT sku_num
FROM product_table)
....
Run Code Online (Sandbox Code Playgroud)
您需要多个条件来执行全表扫描的原因product_table是您的数据库设计错误.客户购买的产品不应该进入客户表中的多个列.相反,您应该有第三个表,它是客户和产品之间的N:M关系.