查看: 192|回复: 0

[SQLServer] sql 整理积累

发表于 6 天前
  1. 1 SELECT * from (SELECT * FROM dbo.xcqy2017_Article WHERE Kind=53) AS t1
  2. 2 LEFT JOIN (SELECT * FROM dbo.xcqy2017_News_Classification) AS t2 ON t2.Ncid = t1.Ncid
复制代码
left join左链接 以左表为主表
  1. 1 SELECT * from (SELECT * FROM dbo.xcqy2017_Article WHERE Kind=53) AS t1
  2. 2 RIGHT JOIN (SELECT * FROM dbo.xcqy2017_News_Classification) AS t2 ON t2.Ncid = t1.Ncid
复制代码
right join右链接 以右表为主表
  1. 1 SELECT
  2. 2 CASE
  3. 3 WHEN Kind = 53 THEN '新闻动态'
  4. 4 WHEN Kind = 53 THEN '新闻动态'
  5. 5 ELSE '其他'
  6. 6 END '新闻动态1'
  7. 7 ,* FROM dbo.xcqy2017_Article
复制代码
CASE WHEN THEN ELSE END条件查询

UNION 操作符用于合并两个或多个 SELECT 语句的结果集。请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。

UNION运算符 默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。

  1. SELECT Aid,Alive,Layer FROM dbo.xcqy2017_Article UNION SELECT Ncid,Alive,Layer FROM dbo.xcqy2017_News_Classification
复制代码

UNION ALL运算符 UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。

  1. SELECT Aid,Alive,Layer FROM dbo.xcqy2017_Article UNION ALL SELECT Ncid,Alive,Layer FROM dbo.xcqy2017_News_Classification
复制代码

EXCEPT运算符 EXCEPT运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行(不知道能不能行,因为版本问题,测试未成功)。

  1. SELECT Ncid FROM dbo.xcqy2017_Article EXCEPT SELECT Ncid FROM dbo.xcqy2017_News_Classification
复制代码

列出表里的所有的字段

  1. select name from syscolumns where id=object_id('xcqy2017_Article')
复制代码

NEWID()随机id排序

  1. SELECT * FROM dbo.xcqy2017_Article ORDER BY NEWID()
复制代码

  



回复

使用道具 举报