zoukankan      html  css  js  c++  java
  • SQL笛卡尔积

    笛卡尔积:
      笛卡尔积在SQL中的实现方式既是交叉连接(Cross Join)。所有连接方式都会先生成临时笛卡尔积表,笛卡尔积是关系代数里的一个概念,表示
    第一个表的行数乘以第二个表的行数等于笛卡尔积结果集的大小。

    参见下面的示例:


    DECLARE @Temp TABLE
    (GroupID 
    INT , 
    GroupName 
    VARCHAR(25),
    ItemNumber 
    varchar(25)
    )
    INSERT INTO @Temp
    SELECT 1,'5805','27-196-018'
    UNION
    SELECT 1,'5805','27-196-019'
    UNION
    SELECT 2,'5805','27-196-020'
    UNION
    SELECT 2,'5805','27-196-021'
    UNION
    SELECT 3,'5805','27-196-022'
    UNION
    SELECT 3,'5805','27-196-023'

    SELECT 
        G1_GroupID 
       ,G1_ItemNumber 
       ,G2_GroupID 
       ,G2_ItemNumber  
    FROM ( 
            
    SELECT 
                GroupID 
    AS G1_GroupID 
               ,ItemNumber 
    AS G1_ItemNumber 
            
    FROM @Temp  
            
    WHERE 
                GroupID   
    IN(1
         ) 
    AS A CROSS JOIN  ( 
            
    SELECT 
                GroupID 
    AS G2_GroupID 
               ,ItemNumber 
    AS G2_ItemNumber 
            
    FROM @Temp   
            
    WHERE 
                GroupID 
    NOT IN(1
         ) 
    AS B 
    ORDER BY A.G1_GroupID,A.G1_ItemNumber
    /*Result
     *    1    27-196-018    2    27-196-020
     *    1    27-196-018    2    27-196-021
     *    1    27-196-018    3    27-196-022
     *    1    27-196-018    3    27-196-023
     *    1    27-196-019    2    27-196-020
     *    1    27-196-019    2    27-196-021
     *    1    27-196-019    3    27-196-022
     *    1    27-196-019    3    27-196-023
     
    */
  • 相关阅读:
    3.2 线程复用:线程池
    3.1.7 线程阻塞工具类:LockSupport
    3.1.6 循环栅栏:CyclicBarrier
    3.1.4 读写锁
    3.1.5 倒计时器:CountDownLatch
    3.1.3 允许多个线程同时访问:信号量
    3.1.2 condition 条件
    3.1.1 重入锁 以及源码分析
    2.8.4 错误的加锁
    jsp中 scope="application" 表示
  • 原文地址:https://www.cnblogs.com/jeriffe/p/2051121.html
Copyright © 2011-2022 走看看