右SELECT topicFollowed FROM User WHERE id = 10000)
返回" [0,2]" << -string
但是当我执行SELECT * from News WHERE topicId IN (SELECT topicFollowed FROM User WHERE id = 10000)
时,只传入0,而不传递2。我无法弄清楚为什么。它只返回0时的topicId
答案 0 :(得分:1)
您的IN
列表包含完全一个项目,即'[0,2]'
形式的字符串。如果那是topicId
的样子,那么您的查询就可以了。
换句话说,您的数据结构存在问题。您不应该在字符串中存储事物列表。正确的数据结构将有两行,列表中的每个ID都有一行。
有时候,你会遇到其他人不好的数据设计。通过这样做,你可以做你想做的事:
SELECT n.*
from News n
WHERE EXISTS (SELECT 1
FROM user u
WHERE find_in_set(topicId, replace(replace(topicFollowed, '[', ''), ']', '') AND
id = 10000
);