mysql - SQL 查询获取表中所有不同的单词,其中相关 id 位于数组中

标签 mysql sql

我对这个 sql 查询感到困惑。

我需要获取表中所有不同的单词,其中 element_id 位于数组中。

 word | element_id
------+-----------
 cat  | 1 
 dog  | 1 
 cat  | 2 
 dog  | 2 
 rat  | 1 
 rat  | 3 

我想查找 element_id 为 1 和 2 的所有单词。

在这种情况下,我想返回,但不返回老鼠

我尝试过这个,但不起作用。

从 element_id = 1 和 element_id = 2 的单词中选择不同的单词

最佳答案

您可以使用group byhaving:

select word
from words
where element_id in (1, 2)
group by word
having count(*) = 2;

这假设您的表没有重复的行。

如果性能是一个问题,那么:

select w.word
from words w
where w.element_id = 1 and
      exists (select 1 from words w2 where w2.word = w.word and w2.element_id = 2);

这可以利用 words(word, element_id)words(element_id)(两个单独的索引)上的索引。

关于mysql - SQL 查询获取表中所有不同的单词,其中相关 id 位于数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53216008/

相关文章:

c# - 选择所有带有所有标签的帖子

MySQL:选择在某些字段中具有最小值的行的ID

mysql - 一个字段中有多个结果

php - 优化 MySQL 全文搜索

SQL 获取列值等于最大值的行

sql - 最快的 "Get Duplicates"SQL 脚本

php - get_results() 中的 WordPress PHP 变量

MySQL - 如何通过 SSH 连接运行长时间(>14 小时)作业?

php - 使用对象进行数据库连接

sql - 根据表格数据替换文字