我一直在尝试使用mysql查询找到一种从列中获取值的方法。
列(让我们谈谈颜色)有几个外键(没有外来约束)。所以想象一件衬衫可以有蓝色和黑色,“颜色”栏的“1,10”是1-Blue和10-Black,都是外键。
我想创建查询以搜索是否使用了蓝色,这样我就可以防止从原始表中删除该颜色。虽然听起来很容易,但我不能使用:
SELECT * FROM shirt WHERE color LIKE '%$id%'
问题是如果没有使用蓝色,它仍会找到黑色(10)并为查询提供真值。
答案 0 :(得分:1)
SELECT * FROM shirt WHERE FIND_IN_SET($id, color) > 0
答案 1 :(得分:1)
嗯..如果我理解你的问题吧。您将值存储为逗号分隔字符串。你想搜索是否有任何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恤,一件用于颜色。