我对这个 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 by
和having
:
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/