gpt4 book ai didi

MySQL 单行中的多个键

转载 作者:行者123 更新时间:2023-11-29 01:46:52 26 4
gpt4 key购买 nike

我有 3 个表;收件箱、发件箱和消息。

对于单个消息,数据如下所示。

留言:

+----------+----------------+
|message_id|content |
+----------+----------------+
|1 |'lorem ipsum...'|

收件箱:

+--------+----------+-----+-------+
|inbox_id|message_id|to_id|from_id|
+--------+----------+-----+-------+
|1 |1 |1 |1 |
|2 |1 |2 |1 |
|3 |1 |3 |1 |

发件箱:

+---------+----------+-----+-------+
|outbox_id|message_id|to_id|from_id|
+---------+----------+-----+-------+
|1 |1 |1,2,3|1 |

单个用户可以向多个人发送 PM。对于每个收件人,都会生成一个新的收件箱记录。

截至目前,无论收件人如何,我都会生成一个发件箱记录。

发送 PM 后,我能够准确生成上面显示的数据,但我在尝试为发件箱生成用户名时遇到问题。

我希望能够为发件箱做这样的事情(下面的查询是我想要完成的,但当然行不通)。

SELECT
users.username,
messages.message_id,
messages.subject
FROM
messages
JOIN
outbox ON outbox.message_id = message.message_id
JOIN
users ON users.user_id IN (outbox.to_id)
WHERE
outbox.from_id = 1

最终结果是

+-------------------+----------+----------------+
|username |message_id|subject |
+-------------------+----------+----------------+
|user1, user2, user3|1 |'lorem ipsum...'|

最佳答案

MySQL 的 IN 并不像您想象的那样工作。 outbox.to_id 是一个字符串,users.user_id 是一个 int。 MySQL 正在尝试将 to_id 转换为 int,并在到达“,”(第一个非 int 字符)时停止,因此“1,2,3”转换为“1”。

This question我问的会帮助你,阅读接受的答案。

我建议不要将“1,2,3”存储在一个字段中,而应为每个接收电子邮件的用户设置单独的行。

关于MySQL 单行中的多个键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4714313/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com