Mysql查询"WHERE 2 IN(`column`)"无效

Das*_* Go 0 php mysql sql

我想执行一个查询,我可以在ID列表中找到一个ID.

user

id_user | name  | id_site
-------------------------
1       | james | 1, 2, 3 
1       | brad  | 1, 3 
1       | suko  | 4, 5
Run Code Online (Sandbox Code Playgroud)

和我的查询(不起作用)

SELECT * FROM `user` WHERE 3 IN (`id_site`) 
Run Code Online (Sandbox Code Playgroud)

此查询工作(但不执行此任务)

SELECT * FROM `user` WHERE 3 IN (1, 2, 3, 4, 6) 
Run Code Online (Sandbox Code Playgroud)

Nie*_*sol 5

那不是多么IN有效.我无法解释为什么,只需阅读文档

试试这个:

SELECT * FROM `user` WHERE FIND_IN_SET(3,`id_site`)
Run Code Online (Sandbox Code Playgroud)

注意,这需要你的数据是1,2,3,1,34,5(即无空格).如果这不是一个选项,请尝试:

SELECT * FROM `user` WHERE FIND_IN_SET(3,REPLACE(`id_site`,' ',''))
Run Code Online (Sandbox Code Playgroud)

或者,考虑重组数据库.即:

CREATE TABLE `user_site_links` (
    `id_user` INT UNSIGNED NOT NULL,
    `id_site` INT UNSIGNED NOT NULL,
    PRIMARY KEY (`user_id`,`site_id`)
);
INSERT INTO `user_site_links` VALUES
    (1,1), (1,2), (1,3),
    (2,1), (2,3),
    (3,4), (3,5);
SELECT * FROM `user` JOIN `user_site_links` USING (`id_user`) WHERE `id_site` = 3;
Run Code Online (Sandbox Code Playgroud)