zoukankan      html  css  js  c++  java
  • 一个SQL语句的实现

    学生表student

    stuid   name   age

    01      xp      20
    02      pan     12


    学生属性表

    id      stuid          type

    1          01           A
    2          01           b
    3          01           C
    4          02           A
    5          02           C


    如何得到type是既是A、又是B、又是C的学生(即01号学生)。

    依次类推,如何根据客户对type的输入,得到相应的查询记录。比如客户输入A、C就得到既是A又是C的学生(即01和02),客户输入A、B就得既是A、又是B的学生(即01)


    解答:

    --創建測試環境
    Create Table 学生属性表
    (id Int,
     stuid Char(2),
     type Varchar(10))
    --插入數據
    Insert 学生属性表 Select 1,          '01',           'A'
    Union All Select 2,          '01',           'b'
    Union All Select 3,          '01',           'C'
    Union All Select 4,          '02',           'A'
    Union All Select 5,          '02',           'C'
    GO
    --測試
    Declare @type Varchar(1000)
    Select @type = 'A,B,C'
    Select stuid From 学生属性表 Where CharIndex(type, @type) > 0 Group By stuid Having Count(stuid) = Len(@type) - Len(Replace(@type, ',', '')) + 1

    Select @type = 'A,C'
    Select stuid From 学生属性表 Where CharIndex(type, @type) > 0 Group By stuid Having Count(stuid) = Len(@type) - Len(Replace(@type, ',', '')) + 1
    GO
    --刪除測試環境
    Drop Table 学生属性表
    --結果
    /*
    stuid
    01

    stuid
    01
    02
    */

  • 相关阅读:
    Element-ui组件--pagination分页
    vue数据请求
    CSS设置背景透明字体不透明
    Sublime Text3的快捷键和插件
    Sublime Text 3 安装Package Control
    想学习一下node.js,重新安装配置了node
    js 上传图片
    js 前端不调接口直接下载图片
    js 获取当前URL信息
    js 常用的正则表达式
  • 原文地址:https://www.cnblogs.com/xp/p/874212.html
Copyright © 2011-2022 走看看