程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> mySQL UNION運算符的默許規矩研討

mySQL UNION運算符的默許規矩研討

編輯:MySQL綜合教程

mySQL UNION運算符的默許規矩研討。本站提示廣大學習愛好者:(mySQL UNION運算符的默許規矩研討)文章只能為提供參考,不一定能成為您想要的結果。以下是mySQL UNION運算符的默許規矩研討正文



/* 樹立數據表 */
create table td_base_data( id int(10) not null auto_increment,userId int(10) default '0',primary key (`id`))ENGINE=MyISAM DEFAULT CHARSET=gbk;
create table td_base_data_20090527( id int(10) not null auto_increment,userId int(10) default '0',primary key (`id`))ENGINE=MyISAM DEFAULT CHARSET=gbk;
/* 拔出模仿記載 */
insert into td_base_data(userId) values(1);
insert into td_base_data(userId) values(45);
insert into td_base_data(userId) values(45);
insert into td_base_data(userId) values(1);
insert into td_base_data(userId) values(45);
insert into td_base_data_20090527(userId) values(1);
insert into td_base_data_20090527(userId) values(45);
insert into td_base_data_20090527(userId) values(45);
insert into td_base_data_20090527(userId) values(1);
insert into td_base_data_20090527(userId) values(45);
insert into td_base_data_20090527(userId) values(45);
/* 查詢測試 */
select count(userId) as cnumber from td_base_data where userId = '45';
/* 3 */
select count(userId) as cnumber from td_base_data_20090527 where userId = '45';
/* 4 */
select (select count(userId) from td_base_data where userId = '45') + (select count(userId) from td_base_data_20090527 where userId = '45') as cnumber;
/* 7 */
select count(*) from
(
select id from td_base_data where userId = '45'
union
select id from td_base_data_20090527 where userId = '45'
) as tx;
/* 4 */
select count(*) from
(
select * from td_base_data where userId = '45'
union
select * from td_base_data_20090527 where userId = '45'
) as tx;
/* 4 */
/* 證實在mysql中,union自己有剔除反復項的感化 */

/* 查詢手冊界說 */
/*

查詢mysql參考手冊:
13.2.7.2. UNION語法
假如您對UNION不應用症結詞ALL,則一切前往的行都是獨一的,好像您曾經對全部成果聚集應用了DISTINCT。假如您指定了ALL,您會從一切用過的SELECT語句中獲得一切婚配的行。
DISTINCT症結詞是一個自選詞,不起任何感化,然則依據SQL尺度的請求,在語法中許可采取。(在MySQL中,DISTINCT代表一個共用體的默許任務性質。)
*/
/* 證實在mysql中,union默許就是DISTINCT的 */
/*
查詢mssql參考手冊:
Transact-SQL 參考
UNION 運算符:
應用 UNION 組合兩個查詢的成果集的兩個根本規矩是:
1.一切查詢中的列數和列的次序必需雷同。
2.數據類型必需兼容。
參數:
UNION
指定組合多個成果集並將其作為單個成果集前往。
ALL
在成果中包括一切的行,包含反復行。假如沒有指定,則刪除反復行。
*/
/* 證實在mssql中,union默許也是DISTINCT的 */

/* 查詢尺度界說 */
/*
查詢SQL2003尺度:
Transact-SQL 參考
4.10.6.2 Operators that operate on multisets and return multisets
MULTISET UNION is an operator that computes the union of two multisets. There are two variants, specified using ALL or DISTINCT, to either retain duplicates or remove duplicates.
7.13 <query expression>
Syntax Rules
6) If UNION, EXCEPT, or INTERSECT is specified and neither ALL nor DISTINCT is specified, then DISTINCT is implicit.
*/
/* 可見SQL2003尺度界說了DISTINCT就是union的默許值 */

/* 准確查詢,同時應當在兩表的userId字段上做索引以加速查詢速度 */
select count(userId) as cnumber from
(
select userId from td_base_data where userId = '45'
union all
select userId from td_base_data_20090527 where userId = '45'
) as tx;
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved