MYSQL将字符串传递给IN运算符不在nodejs中工作

时间:2016-09-23 01:30:26

标签: mysql node.js

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

1 个答案:

答案 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
             );