我有一个博客页面,我从其中发送类别ID以从博客表中获取记录,其中类别ID与GET值匹配。 像这样,
-i.bak
我想要的是,我想要从其中存在Get值(即id)的表中获取所有记录。我有一个博客表结构,像,
假设,如果我的GET值为2,我想从blog_ table中获取所有记录,其中category_id为2。
抱歉,我的英语不好。请帮帮我。
答案 0 :(得分:1)
在表格
中使用FIND_IN_SET()
作为逗号分隔值
SELECT *
FROM `tablename`
WHERE FIND_IN_SET(2,`category_id`)
<强>已更新强>
As per documentation - FIND_IN_SET的第二个参数是逗号分隔列表。所以值2,7被逗号和空格分割
解决方案:停止使用此方法并规范化架构以使用一对多(或多对多)。
OR
从逗号分隔值中删除空格
答案 1 :(得分:1)
您可以使用FIND_IN_SET
示例强>
SELECT FIND_IN_SET('ank','b,ank,of,monk');
<强>输出强>
mysql> SELECT FIND_IN_SET('ank','b,ank,of,monk');
+------------------------------------+
| FIND_IN_SET('ank','b,ank,of,monk') |
+------------------------------------+
| 2 |
+------------------------------------+
1 row in set (0.00 sec)
您的查询
$cat_ids = '2'; // OR $cat_ids = implode(',', array('2', '4', '1'));
// Use REPLACE to remove extra space between , and INT so that 1, 5, 2 becomes 1,5,2
SELECT * FROM table WHERE FIND_IN_SET($cat_ids, REPLACE(category_id, ', ', ','));
帮助链接FIND_IN_SET()
答案 2 :(得分:0)
你必须尝试这个
SELECT *
FROM blogs
WHERE FIND_IN_SET( `category_id`, 2 );
答案 3 :(得分:0)
在表格
中使用FIND_IN_SET()
作为逗号分隔值
SELECT *
FROM `tablename`
WHERE FIND_IN_SET('2',`category_id` ) > 0
希望这有帮助。
答案 4 :(得分:0)
SELECT * FROM `tableName` WHERE FIND_IN_SET('2',`category_id`)>0