要求把user表内的phone列为'1386'开头的行全部放在前面,然后address列包含'北京'的全部放在后面,其余的放在中间。不能有重复行

本文主要是介绍要求把user表内的phone列为'1386'开头的行全部放在前面,然后address列包含'北京'的全部放在后面,其余的放在中间。不能有重复行,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

面试时

要求把user表内的phone列为'1386'开头的行全部放在前面,

然后address列包含'北京'的全部放在后面,

其余的放在中间。

不能有重复行

-----

大概写了一下发现UNION 和UNION ALL的区别

UNION 会排序去重复

UNION ALL 不会排序不会去重复所以要自己写(排序要写在最后一个查询哪里)

----分割线-------------------

创建表

CREATE TABLE [dbo].[user]
(
[id] [int] NOT NULL,
[name] [nchar] (50) COLLATE Chinese_PRC_CI_AS NULL,
[sex] [nchar] (50) COLLATE Chinese_PRC_CI_AS NULL,
[phone] [nchar] (50) COLLATE Chinese_PRC_CI_AS NULL,
[address] [nchar] (50) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[user] ADD CONSTRAINT [PK_user] PRIMARY KEY CLUSTERED ([id]) ON [PRIMARY]

GO


-----分割线----------------------------

插入数据

 INSERT INTO dbo.[user]
          ( id, name, sex, phone, address )
  VALUES  ( 1, -- id - int
            '张三', -- name - nchar(50)
            N'男', -- sex - nchar(50)
            N'13864587159', -- phone - nchar(50)
            N'北京'  -- address - nchar(50)
            ),
( 2, -- id - int
            '李四 ', -- name - nchar(50)
            N'女', -- sex - nchar(50)
            N'12345678911', -- phone - nchar(50)
            N'深圳'  -- address - nchar(50)
            ),
( 3, -- id - int
            '王五', -- name - nchar(50)
            N'男', -- sex - nchar(50)
            N'13868789211', -- phone - nchar(50)
            N'湖北'  -- address - nchar(50)
            ),
( 4, -- id - int
            '陈六', -- name - nchar(50)
            N'男', -- sex - nchar(50)
            N'18947114561', -- phone - nchar(50)
            N'广州'  -- address - nchar(50)
            ),
( 5, -- id - int
            '张三', -- name - nchar(50)
            N'男', -- sex - nchar(50)
            N'13864587159', -- phone - nchar(50)
            N'北京'  -- address - nchar(50)
            ),
( 6, -- id - int
            '鲁七', -- name - nchar(50)
            N'男', -- sex - nchar(50)
            N'15872345134', -- phone - nchar(50)
            N'深圳 '  -- address - nchar(50)
            ),
( 7, -- id - int
            '赵九', -- name - nchar(50)
            N'男', -- sex - nchar(50)
            N'14725836911', -- phone - nchar(50)
            N'北京'  -- address - nchar(50)
            ),
( 8, -- id - int
            '赵九', -- name - nchar(50)
            N'男', -- sex - nchar(50)
            N'14725836911', -- phone - nchar(50)
            N'北京'  -- address - nchar(50)
            ),
( 9, -- id - int
            '熊十', -- name - nchar(50)
            N'女', -- sex - nchar(50)
            N'13486261341', -- phone - nchar(50)
            N'深圳'  -- address - nchar(50)
            ),
( 10, -- id - int
            '杨十一', -- name - nchar(50)
            N'男', -- sex - nchar(50)
            N'13862384544 ', -- phone - nchar(50)
            N'深圳'  -- address - nchar(50)
            )

----------分割线--------

--查询全部数据


--查询语句union

   SELECT  * FROM (SELECT * FROM dbo.[user] WHERE phone LIKE '%1386%') a
  UNION 
  SELECT * FROM (SELECT * FROM dbo.[user] WHERE id NOT IN( SELECT id FROM dbo.[user] WHERE phone LIKE '%1386%' )AND id NOT IN 
  (SELECT id FROM dbo.[user] WHERE address LIKE '%北京%'))b
  UNION 

  SELECT * FROM (SELECT * FROM dbo.[user] WHERE address LIKE '%北京%'  )c 


--查询语句UNION ALL

   SELECT  * FROM (SELECT * FROM dbo.[user] WHERE phone LIKE '%1386%') a
  UNION ALL
  SELECT * FROM (SELECT * FROM dbo.[user] WHERE id NOT IN( SELECT id FROM dbo.[user] WHERE phone LIKE '%1386%' )AND id NOT IN 
  (SELECT id FROM dbo.[user] WHERE address LIKE '%北京%'))b
  UNION ALL

  SELECT * FROM (SELECT * FROM dbo.[user] WHERE address LIKE '%北京%')c 

(排序加 order by id)

 发现他不会排序且不会去重复                                           


---查询语句

 SELECT  * FROM (SELECT * FROM dbo.[user] WHERE phone LIKE '%1386%') a
  UNION ALL
  SELECT * FROM (SELECT * FROM dbo.[user] WHERE id NOT IN( SELECT id FROM dbo.[user] WHERE phone LIKE '%1386%' )AND id NOT IN 
  (SELECT id FROM dbo.[user] WHERE address LIKE '%北京%'))b
  UNION ALL

  SELECT * FROM (SELECT * FROM dbo.[user] WHERE address LIKE '%北京%' AND phone NOT LIKE '%1386%' )c 




这篇关于要求把user表内的phone列为'1386'开头的行全部放在前面,然后address列包含'北京'的全部放在后面,其余的放在中间。不能有重复行的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/248524

相关文章

C#之List集合去重复对象的实现方法

《C#之List集合去重复对象的实现方法》:本文主要介绍C#之List集合去重复对象的实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C# List集合去重复对象方法1、测试数据2、测试数据3、知识点补充总结C# List集合去重复对象方法1、测试数据

使用C#删除Excel表格中的重复行数据的代码详解

《使用C#删除Excel表格中的重复行数据的代码详解》重复行是指在Excel表格中完全相同的多行数据,删除这些重复行至关重要,因为它们不仅会干扰数据分析,还可能导致错误的决策和结论,所以本文给大家介绍... 目录简介使用工具C# 删除Excel工作表中的重复行语法工作原理实现代码C# 删除指定Excel单元

电脑软件不能安装到C盘? 真相颠覆你的认知!

《电脑软件不能安装到C盘?真相颠覆你的认知!》很多人习惯把软件装到D盘、E盘,刻意绕开C盘,这种习惯从哪来?让我们用数据和案例,拆解背后的3大原因... 我身边不少朋友,在使用电脑安装软件的时候,总是习惯性的把软件安装到D盘或者E盘等位置,刻意避开C盘。如果你也有这样的习惯,或者不明白为什么要这么做,那么我

Java如何用乘号来重复字符串的功能

《Java如何用乘号来重复字符串的功能》:本文主要介绍Java使用乘号来重复字符串的功能,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java乘号来重复字符串的功能1、利用循环2、使用StringBuilder3、采用 Java 11 引入的String.rep

SQL常用操作精华之复制表、跨库查询、删除重复数据

《SQL常用操作精华之复制表、跨库查询、删除重复数据》:本文主要介绍SQL常用操作精华之复制表、跨库查询、删除重复数据,这些SQL操作涵盖了数据库开发中最常用的技术点,包括表操作、数据查询、数据管... 目录SQL常用操作精华总结表结构与数据操作高级查询技巧SQL常用操作精华总结表结构与数据操作复制表结

vscode不能打开终端问题的解决办法

《vscode不能打开终端问题的解决办法》:本文主要介绍vscode不能打开终端问题的解决办法,问题的根源是Windows的安全软件限制了PowerShell的运行,而VSCode默认使用Powe... 遇到vscode不能打开终端问题,一直以为是安全软件限制问题,也没搜到解决方案,因为影响也不大,就没有管

MySQL重复数据处理的七种高效方法

《MySQL重复数据处理的七种高效方法》你是不是也曾遇到过这样的烦恼:明明系统测试时一切正常,上线后却频频出现重复数据,大批量导数据时,总有那么几条不听话的记录导致整个事务莫名回滚,今天,我就跟大家分... 目录1. 重复数据插入问题分析1.1 问题本质1.2 常见场景图2. 基础解决方案:使用异常捕获3.

C++原地删除有序数组重复项的N种方法

《C++原地删除有序数组重复项的N种方法》给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度,不要使用额外的数组空间,你必须在原地修改输入数组并在使用O(... 目录一、问题二、问题分析三、算法实现四、问题变体:最多保留两次五、分析和代码实现5.1、问题分析5.

Redis 多规则限流和防重复提交方案实现小结

《Redis多规则限流和防重复提交方案实现小结》本文主要介绍了Redis多规则限流和防重复提交方案实现小结,包括使用String结构和Zset结构来记录用户IP的访问次数,具有一定的参考价值,感兴趣... 目录一:使用 String 结构记录固定时间段内某用户 IP 访问某接口的次数二:使用 Zset 进行

Java实现Elasticsearch查询当前索引全部数据的完整代码

《Java实现Elasticsearch查询当前索引全部数据的完整代码》:本文主要介绍如何在Java中实现查询Elasticsearch索引中指定条件下的全部数据,通过设置滚动查询参数(scrol... 目录需求背景通常情况Java 实现查询 Elasticsearch 全部数据写在最后需求背景通常情况下