Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL选择id=1_Sql_Categories - Fatal编程技术网

SQL选择id=1

SQL选择id=1,sql,categories,Sql,Categories,我有一个表,它的id_category字段有逗号分隔的值,例如,1,2,3,4,64,31,12,14,因为一个记录可以属于多个类别。如果我想选择属于类别1的记录,我必须运行以下SQL查询 SELECT * FROM cme_notizie WHERE id_categoria LIKE '1%' ORDER BY `id` ASC 然后从记录集中选择id_categoria中id_categoria正好为1的所有记录。假设值1不存在,但列值如12、15、120。。。仍然包含1。 有没有

我有一个表,它的id_category字段有逗号分隔的值,例如,1,2,3,4,64,31,12,14,因为一个记录可以属于多个类别。如果我想选择属于类别1的记录,我必须运行以下SQL查询

SELECT * 
FROM cme_notizie 
WHERE id_categoria LIKE '1%' 
ORDER BY `id` ASC
然后从记录集中选择id_categoria中id_categoria正好为1的所有记录。假设值1不存在,但列值如12、15、120。。。仍然包含1。
有没有办法只取1?如果不采用衍生工具或其他方法,正如评论所说,你可能不应该这样做。相反,您应该有另一个表,每个类别有一行。但是,如果您决定使用此劣质解决方案,您可以执行以下操作:

SELECT * 
FROM cme_notizie 
WHERE CONCAT(',', id_categoria, ',') LIKE '%,1,%' 
ORDER BY id ASC

啊,规范化你的数据库。不要在一列中放入多个值。你是说id_categoria包含逗号分隔的字符串吗?下面的问题解释了为什么在一列中保留多个类别是个坏主意。第一个原因正是你现在遇到的。那么,什么是适合我需要的正确方法呢?你应该使用一个包含notizie分类关联的中间表