要求把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

相关文章

Oracle数据库使用 listagg去重删除重复数据的方法汇总

《Oracle数据库使用listagg去重删除重复数据的方法汇总》文章介绍了在Oracle数据库中使用LISTAGG和XMLAGG函数进行字符串聚合并去重的方法,包括去重聚合、使用XML解析和CLO... 目录案例表第一种:使用wm_concat() + distinct去重聚合第二种:使用listagg,

MySQL中删除重复数据SQL的三种写法

《MySQL中删除重复数据SQL的三种写法》:本文主要介绍MySQL中删除重复数据SQL的三种写法,文中通过代码示例讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下... 目录方法一:使用 left join + 子查询删除重复数据(推荐)方法二:创建临时表(需分多步执行,逻辑清晰,但会

Python开发围棋游戏的实例代码(实现全部功能)

《Python开发围棋游戏的实例代码(实现全部功能)》围棋是一种古老而复杂的策略棋类游戏,起源于中国,已有超过2500年的历史,本文介绍了如何用Python开发一个简单的围棋游戏,实例代码涵盖了游戏的... 目录1. 围棋游戏概述1.1 游戏规则1.2 游戏设计思路2. 环境准备3. 创建棋盘3.1 棋盘类

poj2406(连续重复子串)

题意:判断串s是不是str^n,求str的最大长度。 解题思路:kmp可解,后缀数组的倍增算法超时。next[i]表示在第i位匹配失败后,自动跳转到next[i],所以1到next[n]这个串 等于 n-next[n]+1到n这个串。 代码如下; #include<iostream>#include<algorithm>#include<stdio.h>#include<math.

poj3261(可重复k次的最长子串)

题意:可重复k次的最长子串 解题思路:求所有区间[x,x+k-1]中的最小值的最大值。求sa时间复杂度Nlog(N),求最值时间复杂度N*N,但实际复杂度很低。题目数据也比较水,不然估计过不了。 代码入下: #include<iostream>#include<algorithm>#include<stdio.h>#include<math.h>#include<cstring

pip-tools:打造可重复、可控的 Python 开发环境,解决依赖关系,让代码更稳定

在 Python 开发中,管理依赖关系是一项繁琐且容易出错的任务。手动更新依赖版本、处理冲突、确保一致性等等,都可能让开发者感到头疼。而 pip-tools 为开发者提供了一套稳定可靠的解决方案。 什么是 pip-tools? pip-tools 是一组命令行工具,旨在简化 Python 依赖关系的管理,确保项目环境的稳定性和可重复性。它主要包含两个核心工具:pip-compile 和 pip

cell phone teardown 手机拆卸

tweezer 镊子 screwdriver 螺丝刀 opening tool 开口工具 repair 修理 battery 电池 rear panel 后盖 front and rear cameras 前后摄像头 volume button board 音量键线路板 headphone jack 耳机孔 a cracked screen 破裂屏 otherwise non-functiona

学习记录:js算法(二十八):删除排序链表中的重复元素、删除排序链表中的重复元素II

文章目录 删除排序链表中的重复元素我的思路解法一:循环解法二:递归 网上思路 删除排序链表中的重复元素 II我的思路网上思路 总结 删除排序链表中的重复元素 给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。 图一 图二 示例 1:(图一)输入:head = [1,1,2]输出:[1,2]示例 2:(图

C# 防止按钮botton重复“点击”的方法

在使用C#的按钮控件的时候,经常我们想如果出现了多次点击的时候只让其在执行的时候只响应一次。这个时候很多人可能会想到使用Enable=false, 但是实际情况是还是会被多次触发,因为C#采用的是消息队列机制,这个时候我们只需要在Enable = true 之前加一句 Application.DoEvents();就能达到防止重复点击的问题。 private void btnGenerateSh

解决Office Word不能切换中文输入

我们在使用WORD的时可能会经常碰到WORD中无法输入中文的情况。因为,虽然我们安装了搜狗输入法,但是到我们在WORD中使用搜狗的输入法的切换中英文的按键的时候会发现根本没有效果,无法将输入法切换成中文的。下面我就介绍一下如何在WORD中把搜狗输入法切换到中文。