问题描述
大家好,很抱歉,这很基本,但这让我有些着迷。我看到写了一个加入
像 (1 = 1) 上的内部连接表B
为什么这样的加入应该写和在什么情况下。提前感谢。
像 (1 = 1) 上的内部连接表B
为什么这样的加入应该写和在什么情况下。提前感谢。
专家解答
联接返回第一个表中的行,该表链接到第二个联接条件为true的每一行。
1 = 1始终为真。
因此,这将返回连接到其他行的每一行。又名交叉连接:
我想不出这样做的充分理由 *。如果意图是交叉连接,那么你应该写:
* 这可能是动态SQL的一部分。在构造联接和where子句时,从基本的,始终为真实的条件开始很方便。这使得更容易在额外的谓词上进行定位。无需整理位置/on/和开始:
虽然连接标准通常是固定的。所以这在你的连接子句中很有用。
1 = 1始终为真。
因此,这将返回连接到其他行的每一行。又名交叉连接:
create table t1 ( c1 int ); create table t2 ( c1 int ); insert into t1 values ( 1 ); insert into t1 values ( 2 ); insert into t2 values ( 1 ); insert into t2 values ( 2 ); select * from t1 join t2 on ( 1 = 1 ); C1 C1 1 1 1 2 2 1 2 2
我想不出这样做的充分理由 *。如果意图是交叉连接,那么你应该写:
select * from t1 cross join t2; C1 C1 1 1 1 2 2 1 2 2
* 这可能是动态SQL的一部分。在构造联接和where子句时,从基本的,始终为真实的条件开始很方便。这使得更容易在额外的谓词上进行定位。无需整理位置/on/和开始:
stmt := 'select * from t1 join t2 on 1=1 '; if ... then stmt := stmt || ' and'; end if; if ... then stmt := stmt || ' and '; end if;
虽然连接标准通常是固定的。所以这在你的连接子句中很有用。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




