【发布时间】:2014-11-07 20:16:20
【问题描述】:
当在SELECTstatement 中使用IN 运算符时,当subquery 中的db 列名称包含逗号分隔列表(在任一列或两列中)时,正确的语法是什么?
在下面的 sn-p 中,我正在尝试识别以客户喜欢的颜色提供的产品(任一列中都可以有一个或多个值)
SELECT * FROM products WHERE products.Colors IN (SELECT style.colors_love FROM style WHERE user_id = $user_id)
这种格式适用于硬编码列表:
$colors_love = "'Black','Royal_Blue','Dodger_Blue','Red'";
SELECT * FROM products WHERE products.Color IN ('$colors_love')
我已经尝试了所有我能想到的方法,包括将其声明为 array 并尝试连接这些值,并且由于我的编码有点生疏,我觉得我的语法有点不对劲。
【问题讨论】:
-
您的第一个选择似乎是正确的想法,但它引用了
customers.Colors_Prefer,但不包括customers表。从style表中拉出customers.Colors_Prefer是什么意思? -
@lurker - 我的错 - 这是我在清理 sn-p 以发布问题时犯的错字 :-( 感谢您发现 ;-)
-
第一个
SELECT是否以某种方式失败?如果是这样,错误是什么? -
@lurker - 它是 ;-) 更复杂的是,即使错误报告已打开,它也不会给我一个错误代码,并且它确实正确地到达了页面底部(因为它回显了所有内容页面上的其他内容)
-
@Strawberry - 我的印象是“加入”仅用于以某种方式连接的表(即用外键连接表)。是否也用于数据未连接的表?
标签: mysql arrays subquery in-operator