我目前有一个SQL表,列出了消息传递应用程序用户之间的所有不同对话。该表包含一个标题为participantIDs的列,其中包含会话中(两个)参与方中每一个的用户ID。这些值用逗号分隔,例如19,25表示会话在用户19和用户25之间。

现在,我正在尝试找出当用户查看其邮件收件箱时如何检索相关的对话。为此,我希望我需要使用以下代码行:

SELECT * FROM `convos` WHERE `participantIDs` LIKE (*contains user id*);


编写此查询的正确方法是什么?

最佳答案

我建议您采用一种简单的方法,而不是用逗号分隔一列,而可以创建一个具有模式(id, idSender, idRecipient, messages)的名为“ Personne”的表,并选择perssonne 1和perssone 2之间的所有消息,请使用此请求
     select messages from Personne where idSender = '1' and idRecipient = '2';

这样,您将尊重此处Normalization of Database中所述的第一个范式

关于mysql - 在SQL列中存储“数组”并检索所有行,其中所述数组中有某些元素?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45401267/

10-10 01:10
查看更多