gpt4 book ai didi

mysql - SQL Concat 和 Join 3 表只返回符合条件的记录

转载 作者:行者123 更新时间:2023-11-29 00:21:19 25 4
gpt4 key购买 nike

我有 3 个表,其结构如下所示。

user [user_id | firstname | lastname ]
user_messages [user_message_id | from_user_id | etc ]
user_messages_user_status [user_message_id | user_id | etc ]

我想做的是返回如下结果:

results [user_id | user_message_id | from_user_full_name | to_user_full_name]

这是我目前所拥有的,但我一直在'CONCAT_WS:

附近收到错误
SELECT *,
CONCAT_WS(' ', fu.firstname, fu.lastname) fun
CONCAT_WS(' ', tu.firstname, tu.lastname) tun
FROM user_messages um
LEFT JOIN user_messages_user_status umus
ON um.user_message_id = umus.user_message_id
INNER JOIN user fu
ON um.from_user_id = fu.user_id
INNER JOIN user tu
ON umus.user_id = tu.user_id
WHERE um.user_id = 'number' OR fun LIKE 'Name%' OR tun LIKE 'Name%'

感谢您的帮助

最佳答案

您在选择列表中遗漏了一个逗号,位于 fun 别名和 CONCAT_WS 对下一列的调用之间:

SELECT *,
CONCAT_WS(' ', fu.firstname, fu.lastname) fun,
-- ^^^
CONCAT_WS(' ', tu.firstname, tu.lastname) tun
FROM user_messages um
LEFT JOIN user_messages_user_status umus
ON um.user_message_id = umus.user_message_id
INNER JOIN user fu
ON um.from_user_id = fu.user_id
INNER JOIN user tu
ON umus.user_id = tu.user_id
WHERE um.user_id = 'number' OR fun LIKE 'Name%' OR tun LIKE 'Name%'

但是,您将无法仅通过指定别名对派生列 funtun 使用 WHERE 查询。您可以再次指定 CONCAT_WS 函数 - WHERE CONCAT_WS(' ', fu.firstname, fu.lastname) LIKE 'Name%' - 或者想出不同的方法搜索 - WHERE fu.firstname LIKE 'FName%' AND fu.lastname LIKE 'LName%'。请注意,通过在此处使用该函数,数据库引擎很可能无法利用索引。

我相信您可以处理指定所需的列而不是 *

关于mysql - SQL Concat 和 Join 3 表只返回符合条件的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20961734/

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