mysql - 以下场景如何获取记录

标签 mysql sql-match-all

我有如下表格:

node_name              id            term_name
----------------------------------------------
test1                  001           physics 
test1                  001           maths    
test1                  001           chemistry    
test2                  002           physics    
test2                  002           maths

给定术语名称的组合,我想找到 id 集仅包含给定术语名称的所有行。

例如给定术语名称 physics & maths 我的输出应该如下所示

node_name              id            term_name
----------------------------------------------
test2                  002           physics   
test2                  002           maths

Id set 001 还包含 chemistry,这就是为什么不应该包含它的原因。

最佳答案

您的问题:获取所有行,其中不存在具有相同 id 但存在其他 term_names 的其他行

SELECT * FROM <table> x WHERE
  term_name IN ('physics','maths') AND
  NOT EXISTS (SELECT * FROM <table> WHERE id=x.id AND term_name NOT IN ('physics','maths'))

关于mysql - 以下场景如何获取记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8600359/

相关文章:

mysql - 根据数字从数据库中选择数据

mysql - 我可以让它更快吗 - SELECT min(date_time) FROM db.event - 在 bash 脚本中使用

SQL,只有匹配所有外键值才返回记录?

Mysql使用多个条件选择数据

mysql - 使用 Ajax-PDO 的 cleditor 内容不会保存或删除

mysql - 将Google表格中的特定范围插入到MYSQL

php - 在函数内通过 PDO 访问数据 - PHP

mysql:连接表 + 使用 AND 样式查询查找记录,而不是 OR

mysql - 如何进行嵌套 bool 过滤器以在elasticsearch中的同一字段上查找精确匹配的值?

sql - 加入的元素应该*全部*符合某些条件