Mysql 查询其中列有多个值

Mysql query where column has several values

我一直在尝试寻找一种方法来使用 mysql 查询从列中获取值。

列(让我们谈谈颜色)有几个外键(没有外键约束)。所以想象一件衬衫可以有蓝色和黑色,列 "color" 将有“1,10”,即 1-Blue 和 10-Black,都是外键。

我想创建查询来搜索是否正在使用蓝色,这样我就可以防止从他的原始颜色中删除该颜色 table。虽然听起来很简单,但我不会用:

SELECT * FROM shirt WHERE color LIKE '%$id%'

问题是如果没有使用蓝色,它仍然会找到黑色 (10) 并为查询提供真值。

SELECT * FROM shirt WHERE FIND_IN_SET($id, color) > 0

好吧..如果我理解你的问题的话。您将值存储为逗号分隔的字符串。您想搜索是否有任何 T 恤具有该颜色。

$colorToSearchFor = '1'; //blue.. sepearte it by comma to check for several colors at the same time e.g '1,10'
$sql = "SELECT * FROM shirt WHERE color IN(colorToSearchFor)";

//count the results, if it's more than one then a t-shirt has the specifik color assigned.

最好有两个不同的表。一件用于 T 恤,一件用于颜色。