SQL Select 语句的用法

SQL Select 语句的用法,第1张

以下是代码片段
SQL:
select

into
b
from
a
where
1<>1说明:拷贝表(拷贝数据,源表名:a
目标表名:b)以下是代码片段:
SQL:
insert
into
b(a,
b,
c)
select
d,e,f
from
b;说明:显示文章、提交人和最后回复时间以下是代码片段:
SQL:
select
atitle,ausername,badddate
from
table
a,(select
max(adddate)
adddate
from
table
where
tabletitle=atitle)
b说明:外连接查询(表名1:a
表名2:b)以下是代码片段:
SQL:
select
aa,
ab,
ac,
bc,
bd,
bf
from
a
LEFT
OUT
JOIN
b
ON
aa
=
bc说明:日程安排提前五分钟提醒以下是代码片段:
SQL:
select

from
日程安排
where
datediff(’minute’,f开始时间,getdate())>5
说明:两张关联表,删除主表中已经在副表中没有的信息
SQL:
以下是代码片段:
delete
from
info
where
not
exists
(
select

from
infobz
where
infoinfid=infobzinfid 说明:--
SQL:
以下是代码片段:
SELECT
ANUM,
ANAME,
BUPD_DATE,
BPREV_UPD_DATE

FROM
TABLE1,

(SELECT
XNUM,
XUPD_DATE,
YUPD_DATE
PREV_UPD_DATE

FROM
(SELECT
NUM,
UPD_DATE,
INBOUND_QTY,
STOCK_ONHAND

FROM
TABLE2

WHERE
TO_CHAR(UPD_DATE,’YYYY/MM’)
=
TO_CHAR(SYSDATE,
’YYYY/MM’))
X,

(SELECT
NUM,
UPD_DATE,
STOCK_ONHAND

FROM
TABLE2

WHERE
TO_CHAR(UPD_DATE,’YYYY/MM’)
=

TO_CHAR(TO_DATE(TO_CHAR(SYSDATE,
’YYYY/MM’)
¦¦
’/01’,’YYYY/MM/DD’)
-
1,
’YYYY/MM’)
Y,

WHERE
XNUM
=
YNUM
(+)

AND
XINBOUND_QTY
+
NVL(YSTOCK_ONHAND,0)
<>
XSTOCK_ONHAND
B
WHERE
ANUM
=
BNUM说明:--
SQL:
以下是代码片段:
select

from
studentinfo
where
not
exists(select

from
student
where
studentinfoid=studentid)
and
系名称=’"&strdepartmentname&"’
and
专业名称=’"&strprofessionname&"’
order
by
性别,生源地,高考总成绩说明:
从数据库中去一年的各单位电话费统计(电话费定额贺电化肥清单两个表来源)
SQL:
以下是代码片段:
SELECT
auserper,
atel,
astandfee,
TO_CHAR(atelfeedate,
’yyyy’)
AS
telyear,

SUM(decode(TO_CHAR(atelfeedate,
’mm’),
’01’,
afactration))
AS
JAN,

SUM(decode(TO_CHAR(atelfeedate,
’mm’),
’02’,
afactration))
AS
FRI,

SUM(decode(TO_CHAR(atelfeedate,
’mm’),
’03’,
afactration))
AS
MAR,

SUM(decode(TO_CHAR(atelfeedate,
’mm’),
’04’,
afactration))
AS
APR,

SUM(decode(TO_CHAR(atelfeedate,
’mm’),
’05’,
afactration))
AS
MAY,

SUM(decode(TO_CHAR(atelfeedate,
’mm’),
’06’,
afactration))
AS
JUE,

SUM(decode(TO_CHAR(atelfeedate,
’mm’),
’07’,
afactration))
AS
JUL,

SUM(decode(TO_CHAR(atelfeedate,
’mm’),
’08’,
afactration))
AS
AGU,

SUM(decode(TO_CHAR(atelfeedate,
’mm’),
’09’,
afactration))
AS
SEP,

SUM(decode(TO_CHAR(atelfeedate,
’mm’),
’10’,
afactration))
AS
OCT,

SUM(decode(TO_CHAR(atelfeedate,
’mm’),
’11’,
afactration))
AS
NOV,

SUM(decode(TO_CHAR(atelfeedate,
’mm’),
’12’,
afactration))
AS
DEC
FROM
(SELECT
auserper,
atel,
astandfee,
btelfeedate,
bfactration

FROM
TELFEESTAND
a,
TELFEE
b

WHERE
atel
=
btelfax)
a
GROUP
BY
auserper,
atel,
astandfee,
TO_CHAR(atelfeedate,
’yyyy’)说明:四表联查问题:SQL:
以下是代码片段:
select

from
a
left
inner
join
b
on
aa=bb
right
inner
join
c
on
aa=cc
inner
join
d
on
aa=dd
where
说明:得到表中最小的未使用的ID号
SQL:
以下是代码片段:
SELECT
(CASE
WHEN
EXISTS(SELECT

FROM
Handle
b
WHERE
bHandleID
=
1)
THEN
MIN(HandleID)
+
1
ELSE
1
END)
as
HandleID
FROM
Handle
WHERE
NOT
HandleID
IN
(SELECT
aHandleID
-
1
FROM
Handle
a)

基本格式
SELECT [ ALL | DISTICT ] <字段表达式1[,<字段表达式2[,…]
FROM <表名1>,<表名2>[,…]
[WHERE <筛选择条件表达式>]
[GROUP BY <分组表达式> [HAVING<分组条件表达式>]]
[ORDER BY <字段>[ASC | DESC]]
语句说明:
[]方括号为可选项
[GROUP BY <分组表达式> [HAVING<分组条件表达式>]]
指将结果按<分组表达式>的值进行分组,该值相等的记录为一组,带HAVING
短语则只有满足指定条件的组才会输出。
[ORDER BY <字段>[ASC | DESC]]
显示结果要按<字段>值升序或降序进行排序

如果是 mysql 的话请用 rlike 或 regexp:
SELECT 'aXbc' REGEXP '[a-dXYZ]'; -> 1
SELECT 'aXbc' REGEXP '^[a-dXYZ]$'; -> 0
SELECT 'gheis' REGEXP '^[^a-dXYZ]+$'; -> 1
SELECT 'gheisa' REGEXP '^[^a-dXYZ]+$'; -> 0
SELECT 'aXbc' RLIKE '[a-dXYZ]'; -> 1
SELECT 'aXbc' RLIKE '^[a-dXYZ]$'; -> 0
SELECT 'gheis' RLIKE '^[^a-dXYZ]+$'; -> 1
SELECT 'gheisa' RLIKE '^[^a-dXYZ]+$'; -> 0

因为typeld是字符类型的,如果是数值型的就回这么写'+typeld+'
举个列子如果从A 表查询到typeld的值是aaa,当转变为可执行的语句的时候,sum这段会变成
sum(case when typeld='aaa' then usermoney else 0 end)
如果按数值型的写法'+typeld+'
就会变成sum(case when typeld=aaa then usermoney else 0 end)
这里aaa是字符型数据,语法就回出错了。
至于单引号和双引号的问题,是这样的:
两个单引号内,如果需要表示字符的单引号,单引号就要写成两个单引号。
给你几个语句执行看看结果就知道了
select '''' 这里是四个单引号 ,结果一个单引号
select '"' 这里是两单引号内含一个双引号 ,结果双引号
select ''' 这里是三个单引号 ,结果 报错了

/
SQL是3个表的查询,会给出表以及3个表之间的约束关系
Student 表
    No编号 
    Name 姓名
    Birthday 生日
    bj 班级
    jg 籍贯
    adds地址 
    number电话
Course 表
    Kcbh课程编号 
    kcmc课程名称
Source 表
    Cjguid (主键)
    No 编号
    kcbh 课程编号
    cj成绩
/
-- (1)查询学生籍贯为‘湖北’生日为1995-10-3的所有信息
select 
from Student
where 1=1
and jg = '湖北' -- 籍贯为‘湖北’
and Birthday = '1995-10-3' -- 生日为1995-10-3
-- (2)查询学生姓名为‘王华’的各课程的平均分,最高分,最低分,总分。
select
    avg(kcbh) as 平均分,
    max(kcbh) as 最高分,
    min(kcbh) as 最低分,
    sum(kcbh) as 总分
from Source
where 1=1
and exists (select 1 
    from Student
    where 1=1
    and StudentNo = SourceNo
    Name = '王华' -- 姓名为‘王华’
    )
-- (3)没有太看题,大致是要求查询4,5列以上的信息,其中3个表各包含一些信息
select
    StudentName as 学生,
    Coursekcmc as 课程,
    Sourcecj as 成绩
from Student,
    Course,
    Source,
where 1=1
and StudentNo = SourceNo
and CourseKcbh = Sourcekcbh

或者用分开语句,那就要写循环了:
set rsy=servercreateobject("adodbrecordset")
sql = "select DWBH from 表B where XJZT=01 and BZ=#SDA"
rsyopen sql,conn,1,1
set rs=servercreateobject("adodbrecordset")
sql1 = "select DWBH from 表A where DWBH="&rsy("DWBH")
rsopen sql1,conn,1,1
ResponseWrite rs("dwys")


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12869535.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-28
下一篇 2023-05-28

发表评论

登录后才能评论

评论列表(0条)

保存