sql - 在 SQL 语句中使用 LIKE 时没有完全匹配

标签 sql mysql

   SELECT bp.*,r.rating,COUNT(r.review_for),bp.business_name,bp.profile_member 
     FROM ibf_business_reviews r 
LEFT JOIN ibf_business_profiles bp ON ( r.review_for=bp.profile_member ) 
    WHERE bp.sub_category LIKE '%{$id},%'{$location_sql} 
 GROUP BY r.review_for HAVING COUNT(r.review_for) >=1 
 ORDER BY r.date_posted DESC LIMIT 0,2");

此查询用于显示特定位置的特定子类别 ID '%{$id} 中的business_name 的结果。我的问题是,额外的结果显示在共享第二个或第三个数字的类别中,即 ...viewcat&id=54 将显示在 ..viewcat&id=154 等中

我使用 LIKE 可能是我的问题? WHERE bp.sub_category LIKE '%{$id},%'

最佳答案

当您应该在子表中每行存储一个数字时,您正在将逗号分隔的列表存储在 varchar 中。那么你根本就不必使用LIKE

阅读First Normal Form .

关于sql - 在 SQL 语句中使用 LIKE 时没有完全匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2979144/

相关文章:

mysql - Mysql中Group by的限制

mysql - 计算给定列的条目数

mysql - @ 不是我的 mysql 查询中的 in 参数

mysql - 联合SQL查询烦恼

sql - mysqldump - 选择包含特定字符串的表

sql - 使用 between operator 的 Hive 不等式连接

php - MySQL查询用于重新分配图片中的标签并避免重复

mysql - 根据用户id统计出现次数

php - 引用表 mysql 中外键的最后一次出现

php - 与 JSON 的一对多数据库关系