我不知道添加新列(INFO)如果有一种方法,使从架构中this fiddle为user_id
,sender_user_id
和recipient_user_id
name
信息。避免多次内部连接到同一表中
我现在能想到的唯一的办法就是做这个嵌套的内部联接,这感觉好像是无效的:
SELECT e.id
,msg_owner
,msg_owner_name
,sender_user_id
,sender_name
,recipient_user_id
,f.NAME AS recipient_name
,msg_body
,created_at
FROM (
SELECT c.id
,msg_owner
,msg_owner_name
,sender_user_id
,d.NAME AS sender_name
,recipient_user_id
,msg_body
,created_at
FROM (
SELECT a.id
,user_id AS msg_owner
,NAME AS msg_owner_name
,sender_user_id
,recipient_user_id
,msg_body
,created_at
FROM messages AS a
INNER JOIN users AS b ON a.user_id = b.id
) AS c
INNER JOIN users AS d ON c.sender_user_id = d.id
) AS e
INNER JOIN users AS f ON e.recipient_user_id = f.id
有什么(更有效)的方式带来name
值每前述三栏?谢谢你的回答/建议!
您的多个内部连接没有任何问题。这是完全正常和正确的。我会做的唯一改变是你不需要三个嵌套选择。 'SELECT a.id,b.id,c.id FROM INNER JOIN b ON aa = bx INNER JOIN c ON ab = cy' work fine ... – MatBailie
你可以发表你想要的结果吗? ,给出样本输入表?由于没有嵌套的聚合组,所以整个事情大部分可能在没有嵌套SELECT的情况下完成,而是使用同一级别的所有连接。 –
@MatBailie谢谢你的建议! – user1330974