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

标签 mysql

我想获取用户尚未加入的所有社区(基于不同的邮政编码)。

我有一个用户表和其他几个这样的表:

表名:邻里

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;

表名:user_neighborhood

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')

但是,它还会返回我已经在的(一些)社区。这对我来说没有多大意义,为什么只有一些..

最佳答案

为什么要在子查询中添加 user_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')

希望这对您有所帮助!

关于MySQL查询以获取用户未加入的所有社区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56234155/

相关文章:

mysql - Ruby On Rails 检索 mysql 数据库数据 'a' 不同的 'b'

MySQL 加入问题

php - 你在mysql_insert_id() 的括号里放了什么?

php - 如何仅使用时间选择器更新更改日期格式

php - 存储过程与 mysql 一起工作,但 php 出现错误

mysql - 如何查询MySQL中包含空字符的字段

java - MySQL 的 Hibernate 类中出现未知实体错误

MySQL 按指定值的出现次数排序

mysql - 没有 WHERE 子句的 SQL 查询优化

php - MySQL - 提取非现有 ID 的替代方法