学习sql中的排列组合,在园子里搜着看,看到篇文章,于是自己(新手)用了最最原始的sql去写出来:

--需求--
--B, C, F, M and S住在一座房子的不同楼层。
--B 不住顶层。C 不住底层。
--F 既不住顶层也不住底层。M 住得比 C 高。
--S 住的楼层和 F 不相邻。
--F 住的楼层和 C 不相邻。

create table pailie
(rnam varchar(20) )
select 'B' as rnam into #y
union
select 'C'
union
select 'F'
union
select 'M'
union
select 'S'
insert into pailie
select ALL B.rnam+C.rnam+F.rnam+M.rnam+S.rnam from #y B,#y C,#y F,#y M,#y S

delete from pailie
where rnam like
'%BB%' or rnam like '%B%B' or rnam like '%B%B%' or rnam like 'B%B%' or rnam like 'BB%' or rnam like '%BB' or rnam like 'B%B' or rnam like
'%CC%' or rnam like '%C%C' or rnam like '%C%C%' or rnam like 'C%C%' or rnam like 'CC%' or rnam like '%CC' or rnam like 'C%C' or rnam like
'%FF%' or rnam like '%F%F' or rnam like '%F%F%' or rnam like 'F%F%' or rnam like 'FF%' or rnam like '%FF' or rnam like 'F%F' or rnam like
'%MM%' or rnam like '%M%M' or rnam like '%M%M%' or rnam like 'M%M%' or rnam like 'MM%' or rnam like '%MM' or rnam like 'M%M' or rnam like
'%SS%' or rnam like '%S%S' or rnam like '%S%S%' or rnam like 'S%S%' or rnam like 'SS%' or rnam like '%SS' or rnam like 'S%S'

--删掉所有重复的(一个人不能住两层),列出所有的排列

delete from pailie
where rnam like 'B%' or rnam like '%C'

--B 不住顶层。C 不住底层。

delete from pailie
where rnam like 'F%' or rnam like '%F'
or rnam like '%CM%' or rnam like '%C%M' or rnam like '%C%M%' or rnam like 'C%M%' or rnam like 'CM%' or rnam like '%CM' or rnam like 'C%M'

--F 既不住顶层也不住底层。M 住得比 C 高。

delete from pailie
where rnam like 'SF%' or rnam like '%SF%' or rnam like '%SF'
or rnam like 'FS%' or rnam like '%FS%' or rnam like '%FS'

--S 住的楼层和 F 不相邻。

delete from pailie
where rnam like 'CF%' or rnam like '%CF%' or rnam like '%CF'
or rnam like 'FC%' or rnam like '%FC%' or rnam like '%FC'

--F 住的楼层和 C 不相邻。

结果:

由高到低的楼层!

(原文:http://www.cnblogs.com/boss-he/p/4628305.html#commentform)

(学习的知识笔记:CAST 和 CONVERT;WITH...AS();union all;@表变量;charindex )

学习sql中的排列组合,在园子里搜着看于是。。。的更多相关文章

  1. java中的排列组合

    使用之前需要声明一个Combine的对象,调用startCombile方法,可返回想要的组合数或者个数,参数介绍很重要 public class Combine { private Object[] ...

  2. SQL中随机数函数rand()简介

    转自:http://database.51cto.com/art/201009/224397.htm 下文将为您介绍SQL中的随机函数rand(),供您参考,如果您是才接触SQL Server的新手, ...

  3. SQL中DATENAME函数的用法

    在SQL数据库中有多种函数,下面就将为您介绍其中的DATENAME函数的用法,供您参考,希望对您学习SQL中函数的用法能有所帮助. 在SQL数据库中,DATENAME函数的作用是是从日期中提取指定部分 ...

  4. sql中多层循环示例(有游标)

    在需求处理中,我们会遇到需要通过SQL多层循环来处理的问题.如:A表中有8条数据,B表中有10条数据,需要实现A表中的每1条数据对应B表中的10条数据,最后就有了80条数据,从而实现一对多的关系.那如 ...

  5. B - 来找一找吧 HihoCoder - 1701(排列组合 + 同余差值相同)

    这次到渣渣问桶桶了... 准备给你n个数a1, a2, ... an,桶桶你能从中找出m个特别的整数吗,我想让任意两个之差都是k的倍数. 请你计算有多少种不同的选法.由于选法可能非常多,你只需要输出对 ...

  6. CodeForces - 817B(分类讨论 + 排列组合)

    题目链接 思路如下 这一题是:最菜的队伍只有三个人组成,我们只需对排序后的数组的 前三个元素进行分类讨论即可: a[3] != a[2] && a[3] != ar[1] a[3] = ...

  7. iOS多线程中,队列和执行的排列组合结果分析

    本文是对以往学习的多线程中知识点的一个整理. 多线程中的队列有:串行队列,并发队列,全局队列,主队列. 执行的方法有:同步执行和异步执行.那么两两一组合会有哪些注意事项呢? 如果不是在董铂然博客园看到 ...

  8. PHP的排列组合问题 分别从每一个集合中取出一个元素进行组合,问有多少种组合?

    首先说明这是一个数学的排列组合问题C(m,n) = m!/(n!*(m-n)!) 比如:有集合('粉色','红色','蓝色','黑色'),('38码','39码','40码'),('大号','中号') ...

  9. N个数组中所有元素的排列组合(笛卡尔积)算法

    (1)N个数组对象中所有元素排列组合算法 private List<List<Object>> combineAlg(List<Object[]> nArray) ...

随机推荐

  1. Mardown字体颜色、背景色

    Markdown字体颜色.背景色 字体颜色表 Markdwon测试 **粗体文字**,或__加文字__ 加粗 Markdown测试 *斜体文字*, 或_斜体_ 斜体 Markdwon测试 列表: 背景 ...

  2. php修改

    做出一张表,点击登录后进入此表   然后多建立一个<td></td>用来增加一列操作 <h1>英雄联盟英雄表</h1> <table width= ...

  3. CI Weekly #9 | 揭秘阿里 Docker 化实践之路

    2017年悄然而至,对 flow.ci 你有什么新的期待呢?新的一年,flow.ci会越来越强大好用,希望继续得到你的支持与反馈.最近,我们做了如下的「功能优化」与「问题修复」,看看有没有你想要的: ...

  4. iOS-----App闪退,程序崩溃---解决方案

    1.iOS-中app启动闪退的原因 2.iOS开发-闪退问题-解决之前上架的 App 在 iOS 9 会闪退问题 3.iOS-应用闪退总结 4.iOS开发-捕获程序崩溃日志 5.iOS开发-应用崩溃日 ...

  5. 设计模式之迪米特原则(LOD)(最少知识原则)

    来源:迪米特法则(LoD)最初是用来作为面向对象的系统设计风格的一种法则,是很多著名系统,如火星登陆软件系统.木星的欧罗巴卫星轨道飞船的软件系统的指导设计原则. 迪米特法则(LoD)又可分为两种:狭义 ...

  6. Bootstrap3系列:输入框组

    1. 基本实例 通过在文本输入框 <input> 前面.后面或是两边加上文字或按钮,实现对表单控件的扩展. .input-group包含.input-group-addon给 .form- ...

  7. java跳出多重嵌套循环

    public class BreaklFor { public static void main(String args[]){ OK: //设置一个标记 使用带此标记的break语句跳出多重循环体 ...

  8. JQuery 加载 CSS、JS 文件

    JS 方式加载 CSS.JS 文件: //加载 css 文件 function includeCss(filename) { var head = document.getElementsByTagN ...

  9. Java Map hashCode深究

    [Java心得总结七]Java容器下——Map 在自己总结的这篇文章中有提到hashCode,但是没有细究,今天细究整理一下hashCode相关问题 1.hashCode与equals 首先我们都知道 ...

  10. scikit-learn一般实例之四:使用管道和GridSearchCV选择降维

    本例构建一个管道来进行降维和预测的工作:先降维,接着通过支持向量分类器进行预测.本例将演示与在网格搜索过程进行单变量特征选择相比,怎样使用GrideSearchCV和管道来优化单一的CV跑无监督的PC ...