mysql 如何检查表中给定的值是否都存在?

7vux5j2d  于 2022-12-17  发布在  Mysql
关注(0)|答案(1)|浏览(146)

我有一个列表,如“2,3,7,8,9,10,12,13,14,16,18,22,28,30”。我有一个表,其中列有gridConfigId和ownerId。我需要找到所有gridConfigId,其中ownerId列表中没有至少一个给定的集合。
我尝试查询:

SELECT 
   gridConfigId, GROUP_CONCAT(ownerId separator ',') as userList
from 
   gridconfig_favourites gf
where 
   exists (select 1 from gridconfigs g where g.id=gf.gridConfigId and type='asset' and name='Photo Attributes')
GROUP BY gridConfigId
HAVING
   userList != '2,3,7,8,9,10,12,13,14,16,18,22,28,30';

但是这个变体不起作用,因为ownerId的顺序可能不同。我试图添加ORDER BY gridConfigId, ownerId,但是查询不起作用。

wvt8vs2t

wvt8vs2t1#

我找到了解决方案。我只是在GROUP_CONCAT中添加了ORDER BY ownerId

GROUP_CONCAT(ownerId ORDER BY ownerId separator ',')

结果是一个包含有序id的字符串,我可以像比较字符串一样比较id列表。
在文档中进行了描述。

相关问题