作业帮 > 字数作文 > 教育资讯

update,from,where

来源:学生作业帮助网 编辑:作业帮 时间:2024/09/25 23:20:26 字数作文
update,from,where字数作文

篇一:update where exists 和update where in 使用案例(关联表更新)

update where exists 和update where in 使用案例(关

联表更新)

使用 where in 或 where exists更新数据 当使用exists 语句时,如下

update table1 a set a.col1 ='test' where exists (select 1 from table2 b where a.col2=b.col2 )

以上语句exist() 表示是否查出记录,只要记录存在,即不为0 ,则更新,其中的1无关紧要,换成* 也可,所以语句效率较高

in 查询表示完全匹配才能执行更新,效率较低,如下例:

update table1 a set a.clo1='test' where a.col2 in (select b.col3 from table2 b where b.col4='condition')

-- 下面讲述根据药品名称和药品库存更新药品价表的例子。要求是只要药品名称中含有vv字符并且库存为0的药品一律停价,药品名称如‘vv青霉素针’,具体步骤

-- 查询原始数据

select a.* from drug_price_list a where (a.drug_code,a.drug_spec,a.units,a.firm_id) in

( select distinct c.drug_code,c.drug_spec,c.units,d.firm_id from drug_price_list b,drug_dict c,drug_stock d where b.drug_code=c.drug_code and b.drug_code=d.drug_code and b.drug_spec=c.drug_spec and b.drug_spec=d.drug_spec and b.units=c.units and b.units=d.units and b.firm_id=d.firm_id and c.drug_name like 'vv%' and d.quantity <=0 and b.stop_date is null ) and a.stop_date is null ;

select * from drug_dict a where (a.drug_code,a.drug_spec,a.units) in

( select distinct c.drug_code,c.drug_spec,c.units from drug_price_list b,drug_dict c,drug_stock d where b.drug_code=c.drug_code and b.drug_code=d.drug_code and b.drug_spec=c.drug_spec and b.drug_spec=d.drug_spec and b.units=c.units and b.units=d.units and b.firm_id=d.firm_id and c.drug_name like 'vv%' and d.quantity <=0 and b.stop_date is null ) ;

select * from drug_stock a where (a.drug_code,a.drug_spec,a.units,a.firm_id) in

( select distinct c.drug_code,c.drug_spec,c.units,d.firm_id from drug_price_list b,drug_dict c,drug_stock d where b.drug_code=c.drug_code and b.drug_code=d.drug_code and b.drug_spec=c.drug_spec and b.drug_spec=d.drug_spec and b.units=c.units and b.units=d.units and b.firm_id=d.firm_id and c.drug_name like 'vv%' and d.quantity <=0 and b.stop_date is null ) ;

*/

/*select * from price_list a where a.item_name like 'vv%' and stop_date is null ;*/

-- 备份原始数据

/*create table price_list_20140930 as select * from price_list;*/

-- 比较备份数据

/*select count(*) from price_list_20140930;

select count(*) from price_list ;*/

-- 更新药品价格数据

/*update drug_price_list b set b.stop_date = to_date('2014-09-30','yyyy-mm-dd') where

(b.drug_code,b.drug_spec,b.units,b.firm_id) in

( select c.drug_code,c.drug_spec,c.units,d.firm_id from drug_dict c,drug_stock d where

b.drug_code=c.drug_code and b.drug_code=d.drug_code and b.drug_spec=c.drug_spec and b.drug_spec=d.drug_spec and b.units=c.units and b.units=d.units and b.firm_id=d.firm_id and c.drug_name like 'vv%' and d.quantity <=0 )

and b.stop_date is null;*/

-- 注意一定要要查看更新行数和前面的查询数据一致才可提交,否则会造成严重后果。

-- 可以作为依据一表数据更新另一表数据的典型案例,此为常用方法,而 where exists 不同,当使用exists 语句时, 只要记录存在,即不为0 ,则更新,其中的1无关紧要,换成* 也可,所以语句效率较高

-- in 查询表示完全匹配才能执行更新,如上例。

-- 查询核对更新数据

/*select * from price_list a where a.item_name like 'vv%' and stop_date =

to_date('2014-09-30','yyyy-mm-dd') ;*/

select * from price_list a where stop_date = to_date('2014-09-30','yyyy-mm-dd') and item_code ='0102198IJ1' ;

select * from drug_price_List where drug_code ='0102198IJ1';

select * from drug_dict where drug_code ='0102198IJ1';

select * from drug_stock where drug_code ='0102198IJ1';

-- 将加vv名称的药品没有通过触发器更新的停价

/*update price_list set stop_date = to_date('2014-09-30','yyyy-mm-dd') where item_name like 'vv%' and stop_date is null;*/

select * from price_list where stop_date = to_date('2014-09-30','yyyy-mm-dd') and item_name not like 'vv%';

篇二:oracle中有update…from结构吗?

很多熟悉SQL server的朋友在接触到oracle的时候经常犯的一个错误就是总以为oracle中也会有update from这种结构。请你死了这条心吧,在oracle中的update语句中不存在from语句。

前面我们简单介绍过Oracle的update语句。这里我们重点介绍如果基于别的表来更新当前表的update语法。

我们知道在oracle中的例子数据库中有名为scott的schema,里面有一个表是emp,我们就拿这里表来举例

先建立一个结构一模一样的表emp1,并为其插入部分数据 create table emp1

as

select * from emp where deptno = 20;

update掉emp1中的部分数据

update emp1

set sal = sal + 100,

comm = nvl(comm,0) + 50

然后我们试着使用emp1中数据来更新emp中sal 和 comm这两列数据。

我们可以这么写

Update emp

Set(sal,comm) = (select sal,comm. From emp1 where

emp.empno = emp1.empno)

Where exists (select 1 from emp1 where emp1.empno = emp.empno)

请你尤其注意这里的where子句,你可以尝试不写where子句来执行以下这句话,你将会使得emp中的很多值变成空。 这是因为在oracle的update语句中如果不写where子句,oracle将会默认的把所有的值全部更新,即使你这里使用了子查询并且某在值并不能在子查询里找到,你就会想当然的以为,oracle或许将会跳过这些值吧,你错了,oracle将会把该行的值更新为空。

我们还还可以这么写:

update (select a.sal asal,b.sal bsal,a.comm acomm,b.comm bcomm from emp a,emp1 b where a.empno = b.empno)

set asal = bsal,

acomm = bcomm;

这里的表是一个类视图。

当然你执行时可能会遇到如下错误:

ERROR 位于第 2 行:

ORA-01779: 无法修改与非键值保存表对应的列

这是因为新建的表emp1还没有主键的缘故

下面增加一个主键

alter table emp1

add constraint pk_emp1 primary key (empno);

执行之后

在执行前面的语句就能成功。

这里我们总结一下:

在oracle中不存在update from结构,所以遇到需要从另外一个表来更新本表的值的问题的时候,有两种解决的办法:

一种是使用子查询,使用子查询时一定要注意where条件(一般后面接exists子句),除非两个表是一一对应的,否则where条件必不可少,遗漏掉where条件时可能会导致插入大量空值。

另外一种是类视图的更新方法,这也是oracle所独有的。先把对应的数据全部抽取出来,然后更新表一样更新数据,这里需要注意的是,必须保证表的数据唯一型。

篇三:Update中的From语句

Oracle\MS SQL Server的数据库多表关联更新UPDATE与多表更新【原】 一条Update更新语句是不能更新多张表的,除非使用触发器隐含更新。而表的更新操作中,在很多情况下需要在表达式中引用要更新的表以外的数据。我们先来讨论根据其他表数据更新你要更新的表

一、MS SQL Server 多表关联更新

sql server提供了update的from 子句,可以将要更新的表与其它的数据源连接起来。虽然只能对一个表进行更新,但是通过将要更新的表与其它的数据源连接起来,就可以在update的表达式 中引用要更新的表以外的其它数据。 一般形式:

update A SET 字段1=B表字段表达式, 字段2=B表字段表达式 from B WHERE 逻辑表达式

例如:

UPDATE dbo.Table2

SET dbo.Table2.ColB = dbo.Table2.ColB + dbo.Table1.ColB

FROM dbo.Table2

INNER JOIN dbo.Table1

ON (dbo.Table2.ColA = dbo.Table1.ColA);

实际更新的操作是在要更新的表上进行的,而不是在from子句所形成的新的结果集上进行的

二、Oracle 多表关联更新

Oracle没有update from语法,可以通过两种实现方式:

1、利用子查询:

update A

SET 字段1=(select 字段表达

式 from B WHERE ...),

字段2=(select 字段表达式 from B WHERE ...) WHERE 逻辑表达式

UPDATE多个字段两种写法:

写法一:

UPDATE table_1 a

SETcol_x1 = (SELECT b.col_y1, b.col_y2 FROM table_2 b WHERE b.col_n = a.col_m),

col_x2= (SELECT b.col_y2 FROM table_2 b WHERE b.col_n = a.col_m) WHERE EXISTS(SELECT * FROM table_2 b WHERE b.col_n = a.col_m) 或

UPDATE table_1 a

SETcol_x1 = (SELECT b.col_y1, b.col_y2 FROM table_2 b WHERE b.col_n = a.col_m),

col_x2= (SELECT b.col_y2 FROM table_2 b WHERE b.col_n = a.col_m) WHERE a.col_m=(SELECT b.col_n FROM table_2 b WHERE b.col_n = a.col_m)

写法二:

UPDATE table_1 a

SET(col_x1, col_x2)= (SELECT b.col_y1, b.col_y2 FROM table_2 b WHERE b.col_n = a.col_m)

WHERE EXISTS(SELECT * FROM table_2 b WHERE b.col_n = a.col_m); 或

UPDATE table_1 a

SET(col_x1, col_x2) = (SELECT b.col_y1, b.col_y2 FROM table_2 b WHERE b.col_n = a.col_m)

WHERE a.col_m=(SELECT b.col_n FROM table_2 b WHERE b.col_n = a.col_m)

注意:

1. 对于子查询的值只能是一个唯一值,不能是多值。

2. 子查询在绝大多数情况下,最后面的where EXISTS子句是重要的,否则将得到错误的结果。且where EXISTS子句可用另一方法代替,如上。最后的子句是对a表被更新记录的限制,如无此句,对于a表中某记录,如在b表中关联不到对应的记录,则该记录被更新字段将被更新为null。where EXISTS子句就是排除对a表中该情况的记录进行更新。

2、利用视图:

UPDATE (SELECT A.NAME ANAME,B.NAME BNAME FROM A,B WHERE A.ID=B.ID) SET ANAME=BNAME;

注意:

1. 对于视图更新的限制:

如果视图基于多个表的连接,那么用户更新(update)视图记录的能力将受到限制。除非update只涉及一个表且视图列中包含了被更新的表的整个主键,否则不能更新视图的基表。

另外,Oracle中的Delete的from子句也没有多表联接的功能,只能通过子查询的方式来做:

delete from 表A where exists (select * from 表B where 表A.empid=表

B.empid)

delete from 表A where 表A.empid in (select empid from 表B)

三、oracle视图多表更新

在oracle中通常如果视图的数据源来自单表则该视图可以进行更新。而如果视图数据源来自两个以上表时这个视图是不可更新的。但有时候为了操作的方便我们更希望能够对多表视图也进行更新。

这时候我们可以通过建立更新触发器来替代该视图原有更新以达到多表更新的效果

例如:

3.1 创建测试数据表

--===================================================

--创建测试表

--===================================================

Drop Table t1;

Drop Table t2;

create table t1

( t11 numeric(28),t12 varchar2(20));

create table t2

( t11 numeric(28),t22 varchar2(20));

3.2 多表视图范例

--===================================================

--创建测试视图

--===================================================

create Or Replace view t as

select T1.t11 f1 ,T1.t12 f2 ,T2.t22 f3

from T1,T2

Where T1.t11=T2.t11;

3.3 多表视图触发器范例

--===================================================

--创建视图的替代触发器

--===================================================

Create Or Replace Trigger Trg_InsUpdDel_t

Instead Of Insert or update or delete

on t

for each row

Declare

begin

If Inserting Then

Insert Into t1 (t11,t12) Values (:New.f1,:New.f2);

Insert Into t2 (t11,t22) Values (:New.f1,:New.f3);

elsif Updating Then

Update t1 set t11=:New.f1,t12=:New.f2 where t11=:New.f1; Update t2 set t11=:New.f1,t22=:New.f3 where t11=:New.f1; elsif Deleting then

Delete from t1 where t11=:Old.f1;

Delete from t2 where t11=:Old.f1;

End if;

end;

如此即实现多表可更新视图的定义工作 。

但要注意当视图进行重新编译的时候这个触发器会失效需要重建。 来自: http://hi.baidu.com/suofang/blog/item/249c067b40c8def00ad187aa.html

篇四:update多条Select出来的数据

update多条Select出来的数据

好多朋友喜欢用游标解决此问题,但是执行速度狂慢!

其实解决起来很简单了:

先来个简单的:

把FLowER的Am_employee表的email,dept_id,ext_no多条数据按emp_no对应update到EmpBaseInfo表中:

update EmpBaseInfo

set email=b.Mail_account,dept_id=b.dept_code,ext_no=b.ext_no

from flower.flower.dbo.am_employee b

where b.emp_no=EmpBaseInfo.emp_no

复杂一点的:

多表select,并将结果对应插入到指定的表中:

update EmpBaseInfo

set Job_Rank=b.level_number

from

flower.flower.dbo.am_employeea,flower.flower.dbo.am_levelb,flower.flower.dbo.am_approver_level c

where a.emp_id=c.emp_id and b.level_number=c.level_number and a.emp_no=EmpBaseInfo.emp_no

取别名的:

update x

set Job_Rank=b.level_number

from

flower.flower.dbo.am_employeea,flower.flower.dbo.am_levelb,flower.flower.dbo.am_approver_levelc,EmpBaseInfo x

where a.emp_id=c.emp_id and b.level_number=c.level_number and a.emp_no=x.emp_no

--另外一种方式: 临时表

View Code

偶用临时表来解决

1、创建临时表#temp_1

SELECT card_id,sum(card_cost) as 'sum_cost'

INTO #tmp_1

FROM pos_t_vip_cost

GROUP by card_id

go

2、更新表pos_t_vip_info记录

UPDATE pos_t_vip_info,#tmp_1

SET pos_t_vip_info.card_amount = #tmp_1.sum_cost

WHERE pos_t_vip_info.card_id = #tmp_1.card_id

go

3、删除临时表

DROP TABLE #tmp_1

go

以上是参考资料

View Code

update [StormPlatform120316].[dbo].[t_Assessment]

set Developers = le.DevelopmentPrincipal

from [StormPlatform120316].[dbo].[t_Assessment] a left join

[StormPlatform0623].[dbo].[t_LeaderEvaluation] le on a.RequirementApplyID = le.RequirementApplyID and le.createtime in (select max(createtime) from

[StormPlatform0623].[dbo].[t_LeaderEvaluation] group by RequirementApplyID)

where a.Developers = ''

Mysql的update语句

View Code

2010-04-24 20:31 mysql update from 子查询mssql子查询更新

update log set uin= b.uin

from log a,logs b

wherea.accountuin = b.accountuin

mysql不支持 update 子查询更新

找了半天资料终于搞定了...

update `log` a inner join `logs` b on a.`accountuin` = b.`accountuin`

set a.`uin` = b.`uin` where a.`accountuin` = b.`accountuin`

这样就能将查询出来的字段批量更新过去了...

篇五:select from where_格式详解

select from where 格式详解

一、SELECT语句的完整语法为:

SELECT[ALL|DISTINCT|DISTINCTROW|TOP]

{*|talbe.*|[table.]field1[AS alias1][,[table.]field2[AS alias2][,…]]}

FROM tableexpression[,…][IN externaldatabase]

update from where

[WHERE…]

[GROUP BY…]

[HAVING…]

[ORDER BY…]

[WITH OWNERACCESS OPTION]

说明:

用中括号([])括起来的部分表示是可选的,用大括号({})括起来的部分是表示必须从中选择其中的一个。

1 FROM子句

FROM子句指定了SELECT语句中字段的来源。FROM子句后面是包含一个或多个的表达式(由逗号分开),其中的表达式可为单一表名称、已保存的查询或由 INNER JOIN、LEFT JOIN 或 RIGHT JOIN 得到的复合结果。如果表或查询存储在外部数据库,在IN 子句之后指明其完整路径。

例:下列SQL语句返回所有有定单的客户:

SELECT OrderID,Customer.customerID

FROM Orders Customers

WHERE Orders.CustomerID=Customers.CustomeersID

2 ALL、DISTINCT、DISTINCTROW、TOP谓词

(1) ALL 返回满足SQL语句条件的所有记录。如果没有指明这个谓词,默认为ALL。 例:SELECT ALL FirstName,LastName

FROM Employees

(2) DISTINCT 如果有多个记录的选择字段的数据相同,只返回一个。

(3) DISTINCTROW 如果有重复的记录,只返回一个

(4) TOP显示查询头尾若干记录。也可返回记录的百分比,这是要用 TOP N PERCENT子句(其中N 表示百分比)

例:返回5%定货额最大的定单

SELECT TOP 5 PERCENT*

FROM [ Order Details]

ORDER BY UnitPrice*Quantity*(1-Discount) DESC

3 用 AS 子句为字段取别名

如果想为返回的列取一个新的标题,或者,经过对字段的计算或总结之后,产生了一个新的值,希望把它放到一个新的列里显示,则用AS保留。

例:返回FirstName字段取别名为NickName

SELECT FirstName AS NickName ,LastName ,City

FROM Employees

例:返回新的一列显示库存价值

SELECT ProductName ,UnitPrice ,UnitsInStock ,UnitPrice*UnitsInStock AS valueInStock FROM Products

二 .WHERE 子句指定查询条件

1 比较运算符

比较运算符 含义

= 等于

> 大于

< 小于

>= 大于等于

<= 小于等于

<> 不等于

!> 不大于

!< 不小于

例:返回96年1月的定单

SELECT OrderID, CustomerID, OrderDate

FROM Orders

WHERE OrderDate>#1/1/96# AND OrderDate<#1/30/96#

注意:

Mcirosoft JET SQL 中,日期用?#?定界。日期也可以用Datevalue()函数来代替。在比较字符型的数据时,要加上单引号??,尾空格在比较中被忽略。

例:

WHERE OrderDate>#96-1-1#

也可以表示为:

WHERE OrderDate>Datevalue(?1/1/96?)

使用 NOT 表达式求反。

例:查看96年1月1日以后的定单

WHERE Not OrderDate<=#1/1/96#

2 范围(BETWEEN 和 NOT BETWEEN)

BETWEEN …AND…运算符指定了要搜索的一个闭区间。

例:返回96年1月到96年2月的定单。

WHERE OrderDate Between #1/1/96# And #2/1/96#

3 列表(IN ,NOT IN)

IN 运算符用来匹配列表中的任?a href="http://www.zw2.cn/zhuanti/guanyuwozuowen/" target="_blank" class="keylink">我桓鲋怠N子句可以代替用OR子句连接的一连串的条件。

例:要找出住在 London、Paris或Berlin的所有客户

SELECT CustomerID, CompanyName, ContactName, City

FROM Customers

WHERE City In(?London?,? Paris?,? Berlin?)

4 模式匹配(LIKE)

LIKE运算符检验一个包含字符串数据的字段值是否匹配一指定模式。

LIKE运算符里使用的通配符

通配符 含义

? 任何一个单一的字符

* 任意长度的字符

# 0~9之间的单一数字

[字符列表] 在字符列表里的任一值

[!字符列表] 不在字符列表里的任一值

- 指定字符范围,两边的值分别为其上下限

例:返回邮政编码在(171)555-0000到(171)555-9999之间的客户

SELECT CustomerID ,CompanyName,City,Phone

FROM Customers

WHERE Phone Like ?(171)555-####?

LIKE运算符的一些样式及含义

样式 含义 不符合

LIKE ?A*? A后跟任意长度的字符 Bc,c255

LIKE?5[*]? 5*5 555

LIKE?5?5? 5与5之间有任意一个字符 55,5wer5

LIKE?5##5? 5235,5005 5kd5,5346

LIKE?[a-z]? a-z间的任意一个字符 5,%

LIKE?[!0-9]? 非0-9间的任意一个字符 0,1

LIKE?[[]? 1,*

三 .用ORDER BY子句排序结果

ORDER子句按一个或多个(最多16个)字段排序查询结果,可以是升序(ASC)也可以是降序(DESC),缺省是升序。ORDER子句通常放在SQL语句的最后。

ORDER子句中定义了多个字段,则按照字段的先后顺序排序。

例:

SELECT ProductName,UnitPrice, UnitInStock

FROM Products

ORDER BY UnitInStock DESC , UnitPrice DESC, ProductName

ORDER BY 子句中可以用字段在选择列表中的位置号代替字段名,可以混合字段名和位置号。

例:下面的语句产生与上列相同的效果。

SELECT ProductName,UnitPrice, UnitInStock

FROM Products

ORDER BY 1 DESC , 2 DESC,3

四 .运用连接关系实现多表查询

例:找出同一个城市中供应商和客户的名字

SELECT Customers.CompanyName, Suppliers.ComPany.Name

FROM Customers, Suppliers

WHERE Customers.City=Suppliers.City

例:找出产品库存量大于同一种产品的定单的数量的产品和定单

SELECT ProductName,OrderID, UnitInStock, Quantity

FROM Products, [Order Deails]

WHERE Product.productID=[Order Details].ProductID

AND UnitsInStock>Quantity

另一种方法是用 Microsof JET SQL 独有的 JNNER JOIN

语法:

FROM table1 INNER JOIN table2

ON table1.field1 comparision table2.field2

其中comparision 就是前面WHERE子句用到的比较运算符。

SELECT FirstName,lastName,OrderID,CustomerID,OrderDate

FROM Employees

INNER JOIN Orders ON Employees.EmployeeID=Orders.EmployeeID

注意:

INNER JOIN不能连接Memo OLE Object Single Double 数据类型字段。

在一个JOIN语句中连接多个ON子句

语法:

SELECT fields

FROM table1 INNER JOIN table2

ON table1.field1 compopr table2.field1 AND

ON table1.field2 compopr table2.field2 OR

ON table1.field3 compopr table2.field3

也可以

SELECT fields

FROM table1 INNER JOIN

(table2 INNER JOIN [( ]table3

[INNER JOER] [( ]tablex[INNER JOIN]

ON table1.field1 compopr table2.field1

ON table1.field2 compopr table2.field2

ON table1.field3 compopr table2.field3

外部连接返回更多记录,在结果中保留不匹配的记录,不管存不存在满足条件的记录都要返回另一侧的所有记录。

FROM table [LEFT|RIGHT]JOIN table2

ON table1.field1comparision table.field2

用左连接来建立外部连接,在表达式的左边的表会显示其所有的数据

例:不管有没有定货量,返回所有商品

SELECT ProductName ,OrderID

FROM Products

LEFT JOIN Orders ON Products.PrductsID=Orders.ProductID

右连接与左连接的差别在于:不管左侧表里有没有匹配的记录,它都从左侧表中返回所有记录。

例:如果想了解客户的信息,并统计各个地区的客户分布,这时可以用一个右连接,即使某个地区没有客户,也要返回客户信息。

空值不会相互匹配,可以通过外连接才能测试被连接的某个表的字段是否有空值。 SELECT *

FROM talbe1

LEFT JOIN table2 ON table1.a=table2.c

1 连接查询中使用Iif函数实现以0值显示空值

Iif表达式: Iif(IsNull(Amount,0,Amout)

例:无论定货大于或小于¥50,都要返回一个标志。

Iif([Amount]>50,?Big order?,?Small order?)

五. 分组和总结查询结果

在SQL的语法里,GROUP BY和HAVING子句用来对数据进行汇总。GROUP BY子句指明了按照哪几个字段来分组,而将记录分组后,用HAVING子句过滤这些记录。 GROUP BY 子句的语法

SELECT fidldlist

FROM table

WHERE criteria

[GROUP BY groupfieldlist [HAVING groupcriteria]]

注:Microsoft Jet数据库 Jet 不能对备注或OLE对象字段分组。

GROUP BY字段中的Null值以备分组但是不能被省略。

在任何SQL合计函数中不计算Null值。

GROUP BY子句后最多可以带有十个字段,排序优先级按从左到右的顺序排列。 例:在?WA?地区的雇员表中按头衔分组后,找出具有同等头衔的雇员数目大于1人的所有头衔。

SELECT Title ,Count(Title) as Total

FROM Employees

WHERE Region = ?WA?

GROUP BY Title

HAVING Count(Title)>1

JET SQL 中的聚积函数

聚集函数 意义

SUM ( ) 求和

AVG ( ) 平均值

COUNT ( ) 表达式中记录的数目

COUNT (* ) 计算记录的数目

MAX 最大值

MIN 最小值

VAR 方差

STDEV 标准误差

FIRST 第一个值

LAST 最后一个值

六. 用Parameters声明创建参数查询

Parameters声明的语法:

PARAMETERS name datatype[,name datatype[, …]]

其中name 是参数的标志符,可以通过标志符引用参数.

Datatype说明参数的数据类型.

使用时要把PARAMETERS 声明置于任何其他语句之前.

例:

PARAMETERS[Low price] Currency,[Beginning date]datatime

SELECT OrderID ,OrderAmount

FROM Orders

WHERE OrderAMount>[low price]

AND OrderDate>=[Beginning date]

字数作文