SQL嵌套子查询
自:http://blog.csdn.net/AJAXBloger/archive/2007/08/29/1764506.aspx
子查询:
使用子查询的原则
1.一个子查询必须放在圆括号中。
2.将子查询放在比较条件的右边以增加可读性。
子查
询不包含 ORDER BY 子句。对一个 SELECT 语句只能用一个 ORDER BY 子句,
并且如果指定了它就必须放在主
SELECT 语句的最后。
ORDER BY 子句可以使用,并且在进行 Top-N 分析时是必须的。
3.在子查询中可以使用两种
比较条件:单行运算符和多行运算符。
子查询的类型
单行子查询:从内 SELECT 语句只返回一行的查询
多行子查
询:从内 SELECT 语句返回多行的查询
单行子查询
单行子查询是从内查询返回一行的查询。在该子查询类型中用一个单行操
作符。幻灯片中列出了单行操作符。
例
显示那些 job ID 与雇员 141 相同的雇员。
SELECT
last_name, job_id
from employees
WHERE job_id =
(SELECT
job_id
from employees
WHERE employee_id = 141);
SELECT
last_name, job_id, salary
from employees
WHERE job_id =
(SELECT
job_id
from employees
WHERE employee_id = 141)
AND salary
>
(SELECT salary
from employees
WHERE employee_id = 143);
显示 job ID 与雇员 141 相同,并且薪水 高于雇员 143 的那些雇员。
注:外和内查询可以从不同的表中取得
数据。
SELECT last_name, job_id, salary
from employees
WHERE
salary =
(SELECT MIN(salary)
from employees);
求所有人谁的工资最小。
SELECT
department_id, MIN(salary)
from employees
GROUP BY
department_id
HAVING MIN(salary) >
(SELECT MIN(salary)
from
employees
WHERE department_id = 50);
求每个部门的最小工资,但是要高于50号部门的工资。
SELECT
employee_id, last_name
from employees
WHERE salary =
(SELECT
MIN(salary)
from employees
GROUP BY department_id);
问题出现在:单
行子查询返回了多个查询值;
应改为:
SELECT employee_id, last_name
from
employees
WHERE salary in
(SELECT MIN(salary)
from employees
GROUP BY department_id);
SELECT last_name, job_id
from
employees
WHERE job_id =
(SELECT job_id
from employees
WHERE
last_name = 'Haas');
如果子查询返回的是零值
相关文档:
EXEC sp_configure 'show advanced options', 1
declare @strdirname varchar(100)
declare @RemotePathstr varchar(100)
declare @LocalPathstr varchar(100)
declare @DBName char(50)
declare @sql varchar(100)
set @strdirname=replace(substring(convert(varchar(20),getdate(),120),1,10),'-','') --获得日期 ......
SQL Server之分布式事务
收藏
--> Title : SQL Server之分布式事务
--> Author : wufeng4552
--> Date : 2009-11-11
SQL Server之分布式事务
(一)概念:
分布式事务是涉及来自两个或多个源的资源的事务。Microsoft® SQL Serv ......
col_1 col_2 col_3 col_4
---------- ---------- ---------- ----------
a 111 222&nb ......
SELECT TOP 10 *
from HumanResources.Employee
WHERE EmployeeID NOT IN (SELECT TOP 0 EmployeeID from HumanResources.Employee ORDER BY EmployeeID desc)
ORDER BY EmployeeID desc
—————————————————&md ......
PL/SQL语言
1、可执行部分(BEGIN)
组成语句:
变量赋值语句。
流程控制语句。
数据查询、数据操纵、事务控制语句。
游标语句。
2、可执行部分,SQL语句的使用
在可执行部分,可以使用SQL语句,但是不是所有的SQL语句都可以使用。
可以使用的主要有:SELECT、INSERT、UPDATE、DE ......