当前位置: 首页 > 编程笔记 >

Microsoft SQL Server 交叉连接

越风史
2023-03-14
本文向大家介绍Microsoft SQL Server 交叉连接,包括了Microsoft SQL Server 交叉连接的使用技巧和注意事项,需要的朋友参考一下

示例

A cross join是笛卡尔联接,表示两个表的笛卡尔乘积。此联接不需要任何条件即可联接两个表。左表中的每一行将连接到右表中的每一行。交叉联接的语法:

SELECT * FROM table_1
CROSS JOIN table_2

例:

/* Sample data. */
DECLARE @Animal table (
    AnimalId Int IDENTITY,
    Animal Varchar(20)
);

DECLARE @AnimalSound table (
    AnimalSoundId Int IDENTITY,
    AnimalId Int,
    Sound Varchar(20)
);

INSERT INTO @Animal (Animal) VALUES ('Dog');
INSERT INTO @Animal (Animal) VALUES ('Cat');
INSERT INTO @Animal (Animal) VALUES ('Elephant');

INSERT INTO @AnimalSound (AnimalId, Sound) VALUES (1, 'Barks');
INSERT INTO @AnimalSound (AnimalId, Sound) VALUES (2, 'Meows');
INSERT INTO @AnimalSound (AnimalId, Sound) VALUES (3, 'Trumpet');
/* Sample data prepared. */

SELECT 
    * 
FROM 
    @Animal 
    CROSS JOIN @AnimalSound;

结果:

AnimalId    Animal               AnimalSoundId AnimalId    Sound
----------- -------------------- ------------- ----------- --------------------
1           Dog                  1             1           Barks
2           Cat                  1             1           Barks
3           Elephant             1             1           Barks
1           Dog                  2             2           Meows
2           Cat                  2             2           Meows
3           Elephant             2             2           Meows
1           Dog                  3             3           Trumpet
2           Cat                  3             3           Trumpet
3           Elephant             3             3           Trumpet

请注意,还有其他方法可以应用CROSS JOIN。这是无条件的“旧式”联接(自ANSI SQL-92起不推荐使用),导致交叉/笛卡尔联接:

SELECT * 
FROM @Animal, @AnimalSound;

由于“始终为真”的连接条件,该语法也可以使用,但是不建议这样做CROSS JOIN,为便于阅读,应避免使用显式语法。

SELECT * 
FROM 
    @Animal 
    JOIN @AnimalSound 
        ON 1=1
           

 类似资料:
  • 主要内容:笛卡尔积前面所讲的查询语句都是针对一个表的,但是在关系型数据库中,表与表之间是有联系的,所以在实际应用中,经常使用多表查询。多表查询就是同时查询两个或两个以上的表。 在 MySQL 中,多表查询主要有交叉连接、内连接和外连接。由于篇幅有限,本节主要讲解交叉连接查询。内连接和外连接将在《 MySQL内连接》和《 MySQL外连接》中讲解。 交叉连接(CROSS JOIN)一般用来返回连接表的笛卡尔积。 本节

  • 问题内容: 我正在尝试从表中的每个元素中提取所有对对,而该表是同一张表中的每个元素,这是我的查询: 我处于只需要一半记录的情况。我的天真尝试是: 但我无法在插入时查询目标表,如SQL Server所述: 我怎样才能有效地做到呢? 编辑 仅供参考,我说:“我需要一半的记录”,这是错误的,在服用后账户记录计数是 问题答案: 因此,只需对连接进行条件调整,以使左侧始终等于或小于左侧!

  • 问题内容: 我找不到关于交叉联接的任何信息,包括合并/联接或其他一些东西。我需要使用{my function}作为myfunc处理两个数据帧。相当于: 相当于: 但我需要更有效的解决方案:如果使用了应用,我将如何实现它们; ^^ 问题答案: 对于叉积,请参阅此问题。 本质上,您必须进行常规合并,但为每一行赋予相同的键以进行连接,以使每一行在框架之间相互连接。 然后可以通过应用函数将列添加到新框架:

  • 问题内容: 我有一个通用的“ Dimension”和“ DimensionMember”表。 这些表存储大量维和维成员。 我想从可变数量的维中交叉连接维成员。示例:“性别”,“就业类型”,“合同类型”维度中的交叉联接维度成员应产生以下组合 组合的标签应通过连接维度成员的标签来创建(如上所示)。 先感谢您 更新 维度列表(例如“性别”,“就业类型”,“合同类型”)是DYNAMIC(由运行时的另一个查

  • 函数 A 数据操作 1; 数据操作 2; 函数 B 数据操作 3; -> 函数 A(); 函数 C 数据操作 4; -> 函数 A(); 则称,A 为 B,C 的交叉操作。 如果,A,B,C 都需要保证事务性,则 A 为 B, C 的交叉事务 Nutz.Dao 的原子操作支持事务嵌套,所以你可以这么实现这三个函数: 函数 A Tran

  • 交叉验证 那么什么时候才需要交叉验证呢?交叉验证用在数据不是很充足的时候。比如在我日常项目里面,对于普通适中问题,如果数据样本量小于一万条,我们就会采用交叉验证来训练优化选择模型。如果样本大于一万条的话,我们一般随机的把数据分成三份,一份为训练集(Training Set),一份为验证集(Validation Set),最后一份为测试集(Test Set)。用训练集来训练模型,用验证集来评估模型预