Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.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
MySQL查询以获取用户未加入的所有社区_Mysql - Fatal编程技术网

MySQL查询以获取用户未加入的所有社区

MySQL查询以获取用户未加入的所有社区,mysql,Mysql,我想获得用户尚未加入的所有社区(基于不同的ZIP) 我有一个用户表和其他几个类似的表: select * from neighborhood where neighborhood_id NOT IN (select neighborhood_id from user_neighborhood where user_id != 1) AND neighborhood_postal_code IN ('2000', '2100') 表名:邻里 CREATE TABLE neighborhood(

我想获得用户尚未加入的所有社区(基于不同的ZIP)

我有一个用户表和其他几个类似的表:

select *
from neighborhood
where neighborhood_id NOT IN (select neighborhood_id from user_neighborhood where user_id != 1)
AND neighborhood_postal_code IN ('2000', '2100')
表名:邻里

CREATE TABLE neighborhood(
    `neighborhood_id` INT(11) NOT NULL AUTO_INCREMENT,
    `name` VARCHAR(255) NOT NULL,
    `description` TEXT DEFAULT NULL,
    `neighborhood_postal_code` VARCHAR(255) NOT NULL,
    `region_neighborhood` VARCHAR(255) NOT NULL,
    `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (`neighborhood_id`),
    INDEX `neighborhood_region_neighborhood_FI_1` (`region_neighborhood`)
) ENGINE = InnoDB;
CREATE TABLE user_neighborhood(
    `user_id` INT(11) NOT NULL,
    `neighborhood_id` INT(11) NOT NULL,
    `activity_circle` INT(1) DEFAULT 0,
    `duo_circle` INT(1) DEFAULT 0,
    FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`),
    FOREIGN KEY (`neighborhood_id`) REFERENCES `neighborhood` (`neighborhood_id`)
) ENGINE = InnoDB;
表名:user\u邻域

CREATE TABLE neighborhood(
    `neighborhood_id` INT(11) NOT NULL AUTO_INCREMENT,
    `name` VARCHAR(255) NOT NULL,
    `description` TEXT DEFAULT NULL,
    `neighborhood_postal_code` VARCHAR(255) NOT NULL,
    `region_neighborhood` VARCHAR(255) NOT NULL,
    `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (`neighborhood_id`),
    INDEX `neighborhood_region_neighborhood_FI_1` (`region_neighborhood`)
) ENGINE = InnoDB;
CREATE TABLE user_neighborhood(
    `user_id` INT(11) NOT NULL,
    `neighborhood_id` INT(11) NOT NULL,
    `activity_circle` INT(1) DEFAULT 0,
    `duo_circle` INT(1) DEFAULT 0,
    FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`),
    FOREIGN KEY (`neighborhood_id`) REFERENCES `neighborhood` (`neighborhood_id`)
) ENGINE = InnoDB;
我尝试了以下查询,但结果不正确:

SELECT n.*
FROM `neighborhood` as n
left join user_neighborhood as un on n.neighborhood_id = un.neighborhood_id
where un.user_id != 1 and n.neighborhood_postal_code IN ('2000', '2100')
更新:我第一次使用如下子查询设法使查询看起来正确:

select *
from neighborhood
where neighborhood_id NOT IN (select neighborhood_id from user_neighborhood where user_id != 1)
AND neighborhood_postal_code IN ('2000', '2100')

然而,它也返回(一些)我已经在的社区。我不太明白为什么只有一些

你到底为什么要添加用户id!=子查询中的1?我认为,如果您知道要获取的用户的id(假设user_id为10),则在子查询中使用where user_id=10,如:

select *
from neighborhood
where neighborhood_id NOT IN (select distinct neighborhood_id from user_neighborhood where user_id = 10)
AND neighborhood_postal_code IN ('2000', '2100')
但如果要获取所有没有用户的邻居,则可以使用以下查询:

select *
from neighborhood
where neighborhood_id NOT IN (select distinct neighborhood_id from user_neighborhood)
AND neighborhood_postal_code IN ('2000', '2100')

希望这有帮助

这是可行的,它完全有道理,它必须在id=而不是!=。。为了这个,我伤了头太久了。谢谢