我的MySQL表中有一列。列名称为“attached_products”,现在,例如我在那里有一些记录,且attachment_products的值为“1,16,164,1645”,如何选择“16”的所有记录?
我尝试了where子句,它类似于:
select * from websites where attached_products like '%16%'
但它也选择164和21645的记录。
感谢您的帮助! :)
答案 0 :(得分:6)
因为你使用的数据库设计不好,你可以使用,就像你说的那样:
SELECT * FROM `websites` WHERE (`attached_products` LIKE '%,16,%' OR `attached_products` LIKE '16,%' OR `attached_products` LIKE '%,16' OR `attached_products`='16');
但您应该考虑重新设计数据库以便于选择。您可以添加另一个表格,其中仅包含以下附加产品:
table 1
id | etc ... | etc .... |
attached_products
id | id_product | product
其中id_product来自表1,product是产品ID
答案 1 :(得分:0)
您可以尝试select * from websites where attached_products like '%,16,%'
更好的解决方案是创建一个新表来存储这种关系(包含产品和附加的产品ID)
答案 2 :(得分:0)
试试这个
WHERE FIND_IN_SET('16', attached_products);
答案 3 :(得分:0)
从网站中选择*(选择substr(attached_products,','))= 16.但是好的解决方案是重新设计