我有一个具有 JSON 数据类型列的表,其中包含由另一个表的 ID 组成的 JSON 数组。我想从另一个表返回匹配的行。
例如:
SELECT members
FROM clubhouse
WHERE id = 55;
它返回:
["7","8","9"]
我想要 members
表中 ID 为 7、8 和 9 的三行。
我在想这样的事情,但我知道它不会起作用:
SELECT *
FROM members
WHERE id = [FOR EACH JSON(SELECT members FROM clubhouse WHERE id=55)];
我该怎么做?
请注意,我需要单个查询中的所有行,以便我可以进行基本的分页。如果这很重要的话,我正在使用 MariaDB。
最佳答案
我们可以尝试使用json_contains
使用子查询过滤 JSON
值的函数。
SELECT *
FROM members m
WHERE EXISTS (
SELECT 1
FROM clubhouse c
WHERE JSON_CONTAINS(c.members, CONCAT('"', m.id, '"'))
AND c.id = 55
)
关于sql - 按另一个表中存储为 JSON 的值匹配列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72186774/