SQL文(UNION)

2014-11-24 08:40:47 ? 作者: ? 浏览: 0

【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;  
-->

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: