gpt4 book ai didi

php - 复杂的连接查询

转载 作者:可可西里 更新时间:2023-11-01 06:49:13 24 4
gpt4 key购买 nike

我有如下的 MYSQL 表

user TABLE {id INT}

profile TABLE {user_id INT, facebook_id varchar(50)}

messages TABLE {id INT, message TEXT, from_id INT, type enum('main','facebook'}

messages_to TABLE {user_id varchar(50), message_id INT}

profile.user_id REFERS To user.id
- the messages_to.message_id refers to the messages.ID column.
- the messages_to.user_id refers to profile.user_id IF messages.type = 'main' BUT
if message_type = 'facebook' THEN messages_to.user_id REFERS to profile.facebook_id

我想做一个连接查询,基本上选择所有发给特定人的消息,但问题是 messages_to.user_id 可以指 人的 facebook ID 或人的 ID(对 user. id 列)。

所以基本上查询应该按如下方式工作

  • 它应该选择消息表中的所有消息,如果 messages.type = 'facebook' 检查 messages_to.user_id 是否等于该人的 FACEBOOK ID。 (注意 messages_to 表存储每个消息 ID 的收件人)
  • 但是如果 messages.type = 'main' 检查 messages_to.user_id 是否等于人的用户 ID (USER.id)

是否可以高效地执行 mysql 连接查询

messages_tos 表存储 MESSAGES 表中每条消息的所有收件人。一条消息可以有多个收件人。

最佳答案

我想这就是查询。

SELECT messages.*,profile.* 
FROM messages
JOIN messages_to ON messages.id = messages_to.message_id
JOIN profile ON
(profile.user_id = messages_to.user_id AND messages.type = 'main')
OR (profile.facebook_id = messages_to.user_id AND messages.type = 'facebook')

关于php - 复杂的连接查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6959216/

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