gpt4 book ai didi

mysql - 带有逗号分隔列表的数据库列的语法 - mySQL `IN` 运算符

转载 作者:行者123 更新时间:2023-11-29 02:24:17 24 4
gpt4 key购买 nike

SELECT 语句中使用 IN 运算符时,子查询 中的数据库列名称的正确语法是什么?包含逗号分隔的列表(在一列或两列中)?

在下面的代码片段中,我试图确定客户首选颜色的可用产品(任一列中可以有一个或多个值)

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 并尝试连接值,并且由于我的编码有点生疏,我觉得我的语法有点不对离开。

最佳答案

SELECT p.* 
FROM products p
JOIN customers c
ON c.Colors_Prefer = p.colors
WHERE c.user_id = $user_id;

如果我们考虑首选颜色的示例,标准化方法可能如下所示:

user preferred_colour 
bob red
bob yellow
mike red
mike green
dave turquoise

如果您想以这种方式存储数百个属性,那么 EAV 方法可能是合适的:

user attribute value
bob colour red
bob colour yellow
mike colour red
mike colour green
dave colour turquoise
dave vehicle bicycle
dave vehicle car
bob vehicle train

但如果这样做,我仍然很想为每种不同的数据类型创建不同的表 - 因此,至少,一个用于数字类型属性的表和一个用于字符串类型属性的表。

关于mysql - 带有逗号分隔列表的数据库列的语法 - mySQL `IN` 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25828818/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com