zoukankan      html  css  js  c++  java
  • 二、sql新增后返回主键|sql 使用 FOR XML PATH实现字符串拼接|sql如果存在就修改不存在就新增

    一、sql新增后返回主键

    1,返回自增的主键:

     INSERT INTO 表名
     (字段名1,字段名2,字段名3,…) 
     VALUES
     (值1,值2,值3,…)
     SELECT @@IDENTITY

    2,返回主键也可以返回别的字段看需要:inserted.id这里的id可以是其他字段就是一个字段名,比如还可以返回inserted.name

     INSERT INTO 表名
     (字段名1,…)
     OUTPUT inserted.id
     VALUES
     (值1,…)

    二、sql 使用 FOR XML PATH实现字符串拼接

    sql中经常需要把多个行数据合成一行下面是利用 FOR XML PATH来实现的简单介绍。

    1,把图一的转换为图二:

    SELECT articleID,
     (SELECT CONVERT(varchar(10),tagID)+','  FROM articleTag_tb
     FOR XML PATH('')) AS tagID FROM articleTag_tb GROUP BY articleID

    以上是一个表的,下面看看多表关联的做法,其实是一样的只是连接表查询
    这是一个文章对应多个标签的例子三张表:

    CREATE TABLE [dbo].[article_tb](
        [articleID] [int] NULL,
        [articleName] [nvarchar](50) NULL
    )
    
    CREATE TABLE [dbo].[articleTag_tb](
        [articleID] [int] NULL,
        [tagID] [int] NULL
    )
    
    CREATE TABLE [dbo].[tag_tb](
        [tagID] [int] NULL,
        [tagName] [nvarchar](50) NULL
    )

    实现sql语句:

    SELECT articleName,
    (SELECT tagName+','FROM
    (SELECT A.articleName,t.tagName FROM article_tb A
    LEFT JOIN articleTag_tb AT ON AT.articleID=A.articleID
    LEFT JOIN tag_tb T ON AT.tagID=T.tagID) temp
    WHERE temp.articleName=TT.articleName
    FOR XML PATH('')) AS tagName FROM article_tb TT

    解释:
    先把三个表做连接查询查找需要的字段,再用FOR XML PATH 自连接拼接字符串

    三表连接查询结果为:              使用FOR XML PATH拼接后结果:

     

    三、sql如果存在就修改不存在就新增

    IF EXISTS (SELECT 1 FROM 表名 WHERE 条件)
    UPDATE 表名 SET 字段=WHERE 条件
    ELSE
    INSERT INTO 表名(字段) VALUES(值)

    真实使用举例:

    if exists(select 1 from [UserRules] where UserID=@UserID)
    update [UserRules] set [AttendanceRulesID]=@AttendanceRulesID where UserID=@UserID
    else
    insert into [UserRules] (UserID,AttendanceRulesID) Values(@UserID,@AttendanceRulesID)
  • 相关阅读:
    AcWing 157. 树形地铁系统 (hash判断树同构)打卡
    AcWing 156. 矩阵 (哈希二维转一维查询)打卡
    AcWing 144. 最长异或值路径 01字典树打卡
    AcWing 143. 最大异或对 01字典树打卡
    AcWing 142. 前缀统计 字典树打卡
    AcWing 139. 回文子串的最大长度 hash打卡
    AcWing 138. 兔子与兔子 hash打卡
    常用C库函数功能及用法
    编程实现C库函数
    C语言面试题5
  • 原文地址:https://www.cnblogs.com/fger/p/10937325.html
Copyright © 2011-2022 走看看