欢迎投稿

今日深度:

SQL文(UNION),sql文union

SQL文(UNION),sql文union


    【2014/10/14 0:20】

    数据库软件到期了,但是又想记忆一下UNION ~ORDER BY的用法。

    连接数据库

 start mysql -u root (没有设置密码)

    查看数据库中的数据库 

show databases;

    选择test数据库 

use test;

   

 创建一个数据库(这样写好看点)

String SQl="CREATE TABLE milk("+
					" ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,"
					+" NAME VARCHAR(30) NOT NULL ,"
					+" NUMBER INT DEFAULT 0 ,"
					+" PRICE DOUBLE(6,2) DEFAULT 0.00 ,"
					+" ID_SHOP INT NOT NULL"
					+ ")";

显示数据表结构

describe milk


向数据库中插入数据:

insert into milk values(1,'mengniu',20,3.00,12); insert into milk values (2, 'yili',30,30.1,12);insert into milk values(3,'sanyuan',20,1.22,13)

显示数据库中的数据

select * from milk;




使用union语句进行查询

select id from milk where number=20 union select id from milk where number=30


使用order by 进行排序

    错误语句

select id from milk where number=20 order by id desc union select id from milk where number=30
    提示信息:



    正确语句:

select id from milk where number=20  union select id from milk where number=30 order by id desc


  1. 能在union的最后一个子查询中使用order by,而这个order by是针对的是整个union后的结果集。

    2.  所union的各个子查询要有相同数量的列,且对应位置的列必须具有相同的数据类型,但列的名字可以不同。


    下面的例子从其他地方借鉴:

    II  使用列序号代替实际列名, 序号从1开始,如果指定的序号不在允许的范围内,系统会报出一个异常。这里也可以使用ORDER BY supplier_name进行

select supplier_id, supplier_name   
			from suppliers   
			UNION  
			select company_id, company_name   
			from companies   
			ORDER BY 2;  

    

    III 为unoin的各个子查询使用相同的列名

select supplier_id as id, supplier_name as name  
	from suppliers   
	UNION  
	select company_id as id, company_name as name  
	from companies   
	ORDER BY name;  

    

    


SQL中 union问题

UNION 指令的目的是将两个 SQL 语句的结果合并起来。从这个角度来看, UNION 跟 JOIN 有些许类似,因为这两个指令都可以由多个表格中撷取资料。 UNION 的一个限制是两个 SQL 语句所产生的栏位需要是同样的资料种类。另外,当我们用 UNION这个指令时,我们只会看到不同的资料值 (类似 SELECT DISTINCT)。

UNION 的语法如下:

[SQL 语句 1]
UNION
[SQL 语句 2]

假设我们有以下的两个表格,

Store_Information 表格
store_name Sales Date
Los Angeles $1500 Jan-05-1999
San Diego $250 Jan-07-1999
Los Angeles $300 Jan-08-1999
Boston $700 Jan-08-1999

Internet Sales 表格
Date Sales
Jan-07-1999 $250
Jan-10-1999 $535
Jan-11-1999 $320
Jan-12-1999 $750

而我们要找出来所有有营业额 (sales) 的日子。要达到这个目的,我们用以下的 SQL 语句:

SELECT Date FROM Store_Information
UNION
SELECT Date FROM Internet_Sales

结果:

Date
Jan-05-1999
Jan-07-1999
Jan-08-1999
Jan-10-1999
Jan-11-1999
Jan-12-1999

有一点值得注意的是,如果我们在任何一个 SQL 语句 (或是两句都一起) 用 "SELECT DISTINCT Date" 的话,那我们会得到完全一样的结果。
参考资料:sql.1keydata.com/cn/sql-union.php
 

sql语句union

第1种是将两个表完全不同行连起来,即在第一张表后面加了第二张表的不同行

方法2是做笛卡儿积,如表1有m行,表2有n行,则结果有m*n行的组合
且两个name字段是分两列的
因此你安方法2写,sql肯定报错,告诉你name指示不清,因为有两列都叫name分别为china_employees.name,usa_employees.name
 

www.htsjk.Com true http://www.htsjk.com/shujukunews/3824.html NewsArticle SQL文(UNION),sql文union 【2014/10/14 0:20】 数据库软件到期了,但是又想记忆一下UNION ~ORDER BY的用法。 连接数据库 start mysql -u root (没有设置密码) 查看数据库中的数据库 show databases; 选择...
评论暂时关闭