gpt4 book ai didi

php - MYSQL 中 MSSQL 的 STUFF 和 XML PATH 的等价物

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

我有一个 mssql 数据库,我想将其转换/迁移到 mysql。

我收到以下错误消息。

Error Number: 1064

You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '') FROM (SELECT a3t' at line 10

SELECT DISTINCT task_id, members = STUFF(( SELECT N', ' + t.Ful FROM (SELECT teamAlpha.task_id, ( users.firstname + ' ' + users.lastname ) as Ful FROM teamAlpha JOIN users ON users.user_id = teamAlpha.user_id ) t WHERE t.task_id = u.task_id FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '') FROM (SELECT teamAlpha.task_id, ( users.firstname + ' ' + users.lastname ) as Ful FROM teamAlpha JOIN users ON users.user_id = teamAlpha.user_id ) u

代码如下:

    $query = $this->db->query("
SELECT DISTINCT
task_id,
members = STUFF((
SELECT N', ' + t.Ful
FROM (SELECT teamAlpha.task_id,
( users.firstname + ' ' + users.lastname ) as Ful
FROM teamAlpha
JOIN users ON users.user_id = teamAlpha.user_id ) t
WHERE t.task_id = u.task_id
FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '')
FROM
(SELECT teamAlpha.task_id,
( users.firstname + ' ' + users.lastname ) as Ful
FROM teamAlpha
JOIN users ON users.user_id = teamAlpha.user_id ) u");

return $query->result();

mssql 的 STUFF() 和 XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '' 在 mysql 中的等价物是什么?非常感谢您的帮助。

最佳答案

您似乎只想生成一个 CSV 列表,其中包含与表格中给定任务相关的人员。您可以尝试以下查询:

SELECT
ta.task_id,
GROUP_CONCAT(u.firstname, ' ', u.lastname) AS fullname
FROM teamAlpha ta
INNER JOIN users u
ON u.user_id = ta.user_id
GROUP BY
ta.user_id;

请注意,必须使用 FOR XML PATH 的丑陋之处消失了。尽管 SQL Server 对分析函数有丰富的支持,但它对组连接的支持不是很好。在 SQL Server 2017 中有一个新函数 STRING_AGG,它基本上与 MySQL 的 GROUP_CONCAT 做同样的事情。

关于php - MYSQL 中 MSSQL 的 STUFF 和 XML PATH 的等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48868339/

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