㈠ sql2005 for xml path怎么去除重复值
1
2
3
4
delete from 表 where message not in
(select <a href="https://www..com/s?wd=min&tn=44039180_cpr&fenlei=-yw9Uz4Bmy-bIi4WUvYETgN-" target="_blank" class="-highlight">min</a>(message)
from 表 group by dateTime,uid ,homeID )
--删除不是最小的信息 按每天分组
㈡ SQL数据库,用for xml path字符串拼接,拼接内容如何排序
SELECTb.列1,LEFT(List,LEN(List)-1)asNumFROM(
SELECT列1,
(SELECT列2+','FROM表
WHERE列1=a.列1
FORXMLPATH(''))ASList
FROM表a
GROUPBY列1
)b
㈢ sql server 2000中如何使用xml for path来进行字符串拼接
sql
server
2000不支持xml
for
path。可以用另一个方法代替:
declare
@s
varchar(8000)
set
@s
=
''
select
@s
=
@s
+
字段
+
','
from
tablename
where
...
set
@s
=
stuff(@s,len(@s),1,'')
变量@s的值就是串联的字符串。
㈣ 急:mysql怎么实现sqlserver中for xml path
mysql中有group_concat()可以合并多行内容
select AID,ANAME,(
select group_concat(VALUE) from B where B.AID=A.AID
) as AVALUE from A;
㈤ SQL怎么提取字段中最大值
1、既然被for xml path('')组合到一起了,那就想办法把这个字符串拆开;
2、可以创建一个Split这样的函数,来拆开这一列为一个表的形式;
3、然后,再查出这个表里的最大值即可
下面是Ufn_Split函数
createfunction[dbo].[Ufn_Split](@Arrayvarchar(max),@StrSepratevarchar(10))
returns@TokenValstable(fjj_idINTIDENTITY(1,1),strValuevarchar(255))
as
begin
declare@strlenint,@curposint,@valvarchar(255),@nextcommaint
set@strlen=datalength(@Array)
set@curpos=0
while@curpos<=@strlen
begin
set@nextcomma=charindex(@StrSeprate,@Array,@curpos)
if@nextcomma=0
set@nextcomma=@strlen+1
set@val=substring(@Array,@curpos,@nextcomma-@curpos)
insert@TokenValsvalues(rtrim(ltrim(@val)))
set@curpos=@nextcomma+1
end
return
end
函数使用方法:
select*fromdbo.Ufn_Split('1+2+3+5+1','+')table1
㈥ 求助sqlsever for xml path 方法
一、FOR XML PATH 基本运用
[sql] view plain
select teacher,object from teach
利用for xml path后:
[sql] view plain
select teacher,object from teach for xml path
二、改变XML行节点的名称
a、根节点默认是<row></row>,我们可以通过path后面的参数改变根节点名称:
[html] view plain
select teacher,object from teach for xml path('记录'
㈦ 数据库中,如何用SQL语句实现将某字段下的所有记录合成一条记录,用逗号隔开
MS Sqlserver(for xml path的巧用):
select'T1'M,stuff((select','+CAST(T1asvarchar)fromTable_1forxmlpath('')),1,1,'')N
union
select'T2'M,stuff((select','+CAST(T2asvarchar)fromTable_2forxmlpath('')),1,1,'')N
Oracle(自带这样的函数):
selectwm_concat(T1)NfromTable_1;--10g写法
selectlistagg(T1,',')withingroup(orderbyT1)NfromTable_1;--11g写法
㈧ sql语句 问题如图 求讲解
一种方式是用自定义函数,像xtwwz写的那样。但有个缺点,就是数据量大的时候速度比较慢。
另一个思路是使用forxmlpath,仅适用于SQLserver2005及以上版本。
--测试数据
with
t1(code)as(
select'1'unionall
select'1,2'unionall
select'1,2,3'unionall
select'4'),
t2(code,name)as(
select'1','A'unionall
select'2','B'unionall
select'3','C'unionall
select'4','D')
--用charindex和forxmlpath实现批量替换的功能
selectstuff((
select','+t2.namefromt2
wherecharindex(','+t2.code+',',','+t1.code+',')>0
orderbyt2.code
forxmlpath('')
),1,1,'')namefromt1
结果如下: