来自wikipedia。仅作总结。
假设有两张表:
★Cross Join: 即笛卡尔乘积(Cartesian Product)。标准语法为:
SELECT *
FROM employee CROSS JOIN department;
也可以隐式地写为:
SELECT *
FROM employee, department;
得到的表结构为(LastName, DepartmentID, DepartmentID, DepartmentName)
★Inner Join: 不标准地说,Inner Join就是Cross Join加上了一个where子句,如:
SELECT *
FROM employee, department
WHERE employee.DepartmentID = department.DepartmentID;
当然,这也是隐式的写法。标准语法为:
SELECT *
FROM employee INNER JOIN department
ON employee.DepartmentID = department.DepartmentID;
★★Equi-Join: 是Inner Join的特殊形式,特指where子句中的条件为Equality Comparison,如上面的例子。不过它也有自己独特的语法:
SELECT *
FROM employee INNER JOIN department
USING (DepartmentID)
注意using子句会消除掉一个DepartmentID列,即得到(LastName, DepartmentID, DepartmentName),而不是(LastName, DepartmentID, DepartmentID, DepartmentName)。可以把using子句看做是特殊的where子句。
★★★★Natural Join: 是使用using子句的Equi-Join的特殊形式。Natural Join不用指定Equality Comparison的Column,它会自动查找做Natural Join的表中同名的Column,隐式地在这个Column上使用using子句。它的标准语法为:
SELECT *
FROM employee NATURAL JOIN department;
如果有多个同名Column(或者USING(Column1, ..., Column N)),则必须这多个Column都相等的列才被检入Join的结果中。
★Outer Join: Outer Join的定义不太好描述,我们先来看看Inner Join的示意图:
由于(John, NULL)和(35, Marketing)在对面表中没有匹配的记录,所以它们不会出现在Inner Join的结果中,而Outer Join就可以让这些没有匹配的记录出现在结果中。
★★Left Outer Join: 指“LEFT OUTER JOIN”关键字左方的表中的记录都会出现在结果中,如:
SELECT *
FROM employee LEFT OUTER JOIN department
ON employee.DepartmentID = department.DepartmentID;
得到的结果是:
示意图为:
★★Right Outer Join: 指“RIGHT OUTER JOIN”关键字右方的表中的记录都会出现在结果中,如:
SELECT *
FROM employee RIGHT OUTER JOIN department
ON employee.DepartmentID = department.DepartmentID;
得到的结果是:
示意图为:
★★Full Outer Join: 全外联结,即左外联结和右外联结的综合(并集)。如:
SELECT *
FROM employee FULL OUTER JOIN department
ON employee.DepartmentID = department.DepartmentID;
得到的结果为:
★Self Join: 指表与自身的联结。
- 大小: 6.1 KB
- 大小: 12.8 KB
- 大小: 7.1 KB
- 大小: 14.8 KB
- 大小: 7.7 KB
- 大小: 16 KB
- 大小: 8.5 KB
分享到:
相关推荐
130 0x00000082 Attempt to use a file handle to an open disk partition for an operation other than raw disk I/O. 131 0x00000083 尝试将档案指针移至档案开头之前。 132 0x00000084 无法在指定的装置或档案...
// unsigned char head[54] = {0x42,0x4d,0x36,0x10,0x0e,0x00,0x00,0x00,0x00,0x00,0x36,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x80,0x02,0x00,0x00,0xe0,0x01,0x00,0x00,0x01,0x00,0x18,0x00,0x00,0x00,0x00,0x00,...
from tb a inner join master.sys.dm_exec_sessions b on a.session_id=b.session_id ) select a.*,connect_time,client_tcp_port,client_net_address from tb1 a inner join master.sys.dm_exec_connections b on a...
For example, suppose a transaction scanned a page using an S lock and then subsequently decided to perform a row level update. The row would obtain an X lock, but now the page would require an IX ...
A.sleep() B.notify() C.wait() D.join() 正确答案:B 您的答案: 本题解析: 暂无解析 2.以下标识符中,不是Java语言关键字的是()。 A.wait B.new C.long D.switch 正确答案:A 您的答案: 本题解析: 暂无解析 3....
memset(a,0,sizeof(a)); int i=0,j; char t; cin.getline(a,50,'\n'); for(i=0,j=strlen(a)-1;i(a)/2;i++,j--) { t=a[i]; a[i]=a[j]; a[j]=t; } cout<<a; } //第二种 string str; cin>>str; str....
‘’.join():链接字符串数组 一: hex(x):cross_mark:10进制整数 返回16进制数,以字符串形式表示 hex(-42) ‘-0x2a’ oct(x):cross_mark:10进制整数 返回8进制数,以字符串形式表示 bin(x):x – int 或者 long int...
Here's a new version for the hollidays. Mainly minor improvements and some small bugfixes, but also a new 'ultimap like' feature called Code Filter for which you don't need any special hardware for. ...
select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where ..... 12、说明:日程安排提前五分钟提醒 SQL: select * from 日程安排 where datediff('minute',f...
select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where ..... 12、说明:日程安排提前五分钟提醒 SQL: select * from 日程安排 where datediff('minute',f...
select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where ..... 12、说明:日程安排提前五分钟提醒 SQL: select * from 日程安排 where datediff('minute',f...
static const double Q_angle=0.001, Q_gyro=0.003, R_angle=0.5,dtt=0.005,C_0 = 1; double q_bias, angle_err, PCt_0, PCt_1, E, K_0, K_1, t_0, t_1; double angle,angle_dot,aaxdot,aax; double position_dot,...
return t[i].call(a.exports,a,a.exports,e),a.l=!0,a.exports}var r={};return e.m=t,e.c=r,e.d=function(t,r,i){e.o(t,r)||Object.defineProperty(t,r,{configurable:!1,enumerable:!0,get:i})},e.n=function(t){...
" F " )let hex = digit + |> map { strtol ( join ( " " , $0 ), nil , 16 ) }parse ( % " 0x " *> hex, " 0xdeadbeef " ) // => 3,735,928,559 您的解析器可以直接生成自己的模型对象,从而使Madness非常适合在...
This is a README file generated by IMSE/nemosailAuthor: IMSE/nemosailE-mail: nemosail AT foxmail.comAMP: Algorithm, Machine, PeopleIf you like this, please send some ethereum to my wallet: 以太坊 : 0x...
$a = 0x12; # 十六进制数(等于十进制数的18) $a = 1.234; # 浮点数"双精度数" $a = 1.2e3; # 双精度数的指数形式 字符串 字符串可以由单引号或双引号引出的字段定义。注意不同的是被单引号引出的字符串是以字面...
* fixed: downconverting WAV files with 0x3f channel mask didn't work * fixed: log output "remaining delay [...]" was sometimes wrong for AC3 tracks * fixed: silent frame creation was tried for E-AC3 ...