我有一个表:
Id Name
1 phucuong
2 ksks
3 na
我想要的输出是:
phucuongksksna
如何写sql?
我尝试了concat
,但它不起作用。
In SQL Server:
SELECT Name AS [text()] FROM YourTable FOR XML PATH ('')
在MySQL:
SELECT GROUP_CONCAT(Name SEPARATOR '') FROM YourTable
SQL Server
SELECT STUFF
(
(
SELECT ','+ CAST(RTRIM(LTRIM(g.Name)) AS VARCHAR(MAX))
FROM YourTable g,YourTable e
WHERE g.Id=e.Id
FOR XMl PATH('')
),1,1,''
)
在SQL Server数据库和Postgres数据库中,我们可以使用STRING_AGG
:
SELECT STRING_AGG(name,'') FROM yourtable;
在Oracle数据库中,我们可以使用LISTAGG
:
SELECT LISTAGG(name) FROM yourtable; -- or LISTAGG(name,''), both will do
在MariaDB中,与MYSQL中相同的查询将工作:
SELECT GROUP_CONCAT(name SEPARATOR '') FROM yourtable;
在SQLite DB中,它与前一个非常相似:
SELECT GROUP_CONCAT(name,'') FROM yourtable;
当然,也有其他的可能性/函数来实现这一点,但据我所知,这些是最有效的选择。
SELECT DISTINCT
STUFF(
(
SELECT ',' + name
FROM table A1
WHERE A1.ID = A2.ID FOR XML PATH('')
), 1, 1, '') AS aliasName