⑴ sql的一段语句看不懂,求大神赐教
len(orgupcode) 代表 orgupcode 字段所占的长度
len(orgupcode)-2 就代表长度是这个字段的长度-2那么长
substring(orgupcode,0,len(orgupcode)-2) 首先substring是截取字符串函数,从最前边开始取orgupcode字段,但是后两位不截取
updatet Organization set orgupcode
substring(orgupcode,0,len(orgupcode)-2)where orgupcode
not in ('001')
整个的意思就是修改Organization 表的orgupcode字段,使其内容为目前orgupcode不截取后两位那样,条件是orgupcode不等于001
⑵ SQL语句看不懂
case when xxx then yyy end是个语法。
相当于java中的switch语句。
case
when sex = 1 then '男'
when sex = 2 then '女'
else '保密'
end
sum()是求和用的。
as表示显示名是什么。
你可以自行分析自己的sql了吧。
⑶ 看不懂的SQL 寻求帮助
select a.specimen_no,b.barcode,b.patient_code,b.patient_name,b.sex,b.age,b.age_unit,b.ward_id,c.ward_name,a.specimen_type_id,d.specimen_type_name ------这一段的意思是选择列,a、b、c、d分别是表的别名
assay_specimen_info a,collect_specimen_info b,ward c ,specimen_type d
------这一段的意思就是选择表,并分别规定表别名
where a.barcode=b.barcode and b.ward_id=c.ward_id and a.specimen_type_id=d.specimen_type_id and (specimen_no='')
----这一段的意思是设置条件,a表的barcode字段值等于b表的barcode值,and(且)b表的ward_id等于c表的ward_id值,且a表的specimen_type_id等于d表的specimen_type_id,且 a表的specimen_no值为“”。
归根结底就是一个多表查询。
select distinct(a.specimen_no),a.micro_item_id,b.micro_item_name,a.micro_item_comment from assay_specimen_micro a,micro_item b where a.micro_item_id=b.micro_item_id and a.specimen_no>''and a.specimen_no<'' and anti_item_id<>'-1' order by specimen_no
这句的意思是从assay_specimen_micro和micro_item表中选出assay_specimen_micro的唯一字段specimen_no以及a.micro_item_id,b.micro_item_name,a.micro_item_comment;查询的条件是a表的micro_item_id等于b表的micro_item_id加上a表的specimen_no大于“”且a表的specimen_no小于“”且a表的anti_item_id不等于“-1”,再把结果根据specimen_no进行排序,默认升序asc。
<>就是不等于的意思
哎,很简单的,都是一个道理,仔细看看就会懂的
⑷ 请帮忙分析下这句SQL语句,看不懂,小弟是菜鸟
select(查询) c.id(company的id字段) as comid(显示的时候取个别名叫comid),comname(company的comname字段), addre(company的addre字段),c.name(company的name字段) as cname(显示的时候用取个别名叫cname),a.name(area的name字段) as aname(显示的时候取个别名叫aneme),row_number() over(order by c.id) as rownum,Num.回馈数 from company c(给company取个别名叫a) inner join(连表出现啊un) area a(给area取个别名叫a) on c.area=a.id(条件 类似 where c.area=a.id) inner join(连表查询)(select count(*)(取出总数) as '回馈数'(显示的时候取个别名叫回馈数),comid from prelist where(条件) prelist.city>0 group by comid) Num on c.id=Num.comid where estate=4 order by c.id(用company的id字段进行排序)
⑸ SQL语句看不懂啊
Insert into Account (Account.CardID,Account.Score) 向Account表里CardID和Score插入数据
Select Users.CardID,2 From Users 其中CardID关联而来,score写死了为2
left join Account on (Account.CardID=USers.CardID)
where Account.CardID is null --这个地方怪怪的,你确定不是 is not null?
然后数据来源是Users表左连接Account表 ,条件是Account的CardID字段等于USers的CardID字段
并且Account表里的CardID 为空
⑹ sql语句看不懂,今天看了朋友写的一个sql语句,没看懂什么意思,还望高手把它翻译成通俗易懂的中文
这个应该是SQL2005以上版本的语句,且该语句用于临时用途;
with关键字从resume表生成一个CTE(用表表达式,仅作用于单个查询语句之内,可以认为是创建的命名临时表)DayResumeStats;该CTE中筛选出所有不符合条件的NewResumes,
RefreshedResumes,OpenResumes,和 LowRankResumes;(看字面是筛选出所有非新的、未更新的、未开放的和低级别的简历),
delete 语句从该DayResumeStats中删除所有YMD=@yesterday的记录;,
⑺ 这个SQL语言查询实在看不懂,求教。。。主要是not exist太头疼了
思路是这样的
1 查询小明学过的课程
2 根据1查询没有学过小明选修课程的人(只要有个一课程没有学就命中)
3 根据2查询除了这些人以外的人(你的结果集中应该会有小明自己吧)
第一层select distinct sno from SC as A where not exists
第二层select * from S,SC as B where S.sname='小明' and B.sno=S.sno and not exists
第三层select * from SC as D where D.sno=A.sno and D.cno=B.cno
实际上比较费解的是第三层中的D.sno=A.sno and D.cno=B.cno
可以这样理解 先不看not exists
第一层查的是所有的学生
第二层中有S.sname='小明' 实际查的是小明学过的课程
第三层查的是学过小明学过课程的所有学生
再带着not exists从下往上看
第二层查的是小明学过的课程中没有被自己学过的学生
第一层所有学生中除去有(小明学过但自己没有学过的) 实际上就是只要小明学过自己就学过
不知道这样表述是不是清楚 呵呵
⑻ sql 语句看不懂求解释
select a.*,b.name as cname,c.username
from cms_article a
left outer join cms_category b on a.cid=b.id
left outer join cms_users c on a.created_by = c.userid
order by a.id desc
表名重命名你应该看得懂的吧。
依a表数据为主,若a.cid在b表中有记录,则显示b.name
依a表数据为主,若a.created_by在c表中有记录,则显示c.userid
这样实现的好出是,记录条数就是a表的条数。
a.cid,a.created_by在b,c表中有就显示,无就不显示,不会遗漏数据
⑼ 诡异的SQL语句求解!
& 是一个位运算符,将在两个表达式之间执行“位与”逻辑运算,从两个表达式取对应的位。当且仅当输入表达式中两个位(正在被解析的当前位)的值都为 1 时,结果中的位才被设置为 1;否则,结果中的位被设置为 0。
举例说明:
170(假设为 A)的二进制表示形式是 0000 0000 1010 1010。
75(假设为 B)的二进制表示形式是 0000 0000 0100 1011。
对上述两个值执行“位与”运算将产生二进制结果 0000 0000 0000 1010,即十进制数 10。
(A & B):
0000 0000 1010 1010
0000 0000 0100 1011
-------------------
0000 0000 0000 1010
即10.
<< 也是一个位运算符,表示左移。<<1即左移一位,举例:
0101 (5)执行左移之后为:1010(10)其实也就是乘以2.
所以,
3 & (1<<(type-1))
就是
1乘以(type-1)个2之后再与“3”(二进制:0011)进行“位与”操作。
如果type-1 = 0 那么1就不左移。即3&1,这个结果为
0011
0001
&之后为:
0001
结果为真。
该列将被记入结果集。
如果type-1>0
结果值最多是2,因为左移一位之后,最后端那个位必然是0,所以,结果要么是2,要么是0.如果为0,则该列不包含在结果集中。
如果还有不明,请加我网络HI.
第二次回答:
如果3被代入变量,那么也是一样的,进行运算,不过参与运算的值不同而已,这里并不是指第3列,而就是3这个值,转换成二进制之后再做位运算。变量也是一样的道理,没有影响。关键取决于运算之后是不是0.如果为0,那么这列就不在结果集内。
修正一个描述错误:
<<1 表示:左移一位。 刚才描述中,写成了1<<。
⑽ 这个SQL语言查询实在看不懂,求教。。。主要是not exist...
这个SQL语言查询实在看不懂,求教。。。主要是not exist...
路是这样的
1 查询小明学过的课程
2 根据1查询没有学过小明选修课程的人(只要有个一课程没有学就命中)
3 根据2查询除了这些人以外的人(你的结果集中应该会有小明自己吧)
第一层select distinct sno from SC as A where not exists
第二层select * from S,SC as B where S.sname='小明' and B.sno=S.sno and not exists
第三层select * from SC as D where D.sno=A.sno and D.cno=B.cno
实际上比较费解的是第三层中的D.sno=A.sno and D.cno=B.cno
可以这样理解 先不看not exists
第一层查的是所有的学生
第二层中有S.sname='小明' 实际查的是小明学过的课程
第三层查的是学过小明学过课程的所有学生
再带着not exists从下往上看
第二层查的是小明学过的课程中没有被自己学过的学生
第一层所有学生中除去有(小明学过但自己没有学过的) 实际上就是只要小明学过自己就学过
不知道这样表述是不是清楚 呵呵
顺一门有百福 平安二字值千金 万象更新