sql - 从表 A 中选择在表 B 中至少有 X 条记录的记录

标签 sql postgresql

我有一个名为 users 的表,另一个名为 user_flags 的表,还有另一个名为 flags 的表

users 表包含一个nameid

flags 表包含一个nameid

user_flags 包含一个user_idflag_id

如果我想获得所有具有任何提供的标志名称的用户,查询是什么?也就是说,如果查询提供“红色”和“蓝色”但用户仅与蓝色关联,我们将返回该用户。

也就是说,如果我有以下模式:http://sqlfiddle.com/#!9/ac105 - 我传递的标志名称是 redblue,它将返回用户 John 的行,因为 John 有一个 red 关联旗帜。

最佳答案

您需要根据它们的 id 值连接表,并为标志颜色名称使用 where 子句。像这样:

select * from Users U
  join UsersFlags UF on UF.user_id = U.id
  join Flags F on F.id = UF.flag_id
  where F.name = 'red'

关于sql - 从表 A 中选择在表 B 中至少有 X 条记录的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32983682/

相关文章:

php - 同时运行多个 PHP 脚本(数据库循环问题)

postgresql - 仅显示没有子分区的表列表

silverlight - 如何使用 Silverlight 访问 PostgreSQL

sql - 记录级权限

c# - MySql 连接字符串的 Sql 等效项 (C#)

sql - 如何在 PostgreSQL 中限制一个 float

postgresql - VACUUM FULL 表所需的空间

postgresql - 在 VPC 中访问 RDS posgtgreSQL?

sql - 如何删除 Teradata 表中不在另一个表中的行?

MySQL 排名查询未给出预期值