1樓:匿名使用者
1、select sno,sname,scorefrom sc a
where exists
(select 1 from sc
where grade>85 and sno=a.sno and sname=a.sname)
2、select sno,sname,scorefrom sc a
where not exists
(select 1 from sc
where grade<=85 and sno=a.sno and sname=a.sname)
2樓:匿名使用者
不知道你的教程上怎麼說的,這樣用「相關子查詢」和「非相關子查詢」看著彆扭,
比較常用的如下
select s.sno, s.snamefrom s
inner join sc on sc.sno=s.snowhere sc.grade>85
也可以select s.sno, s.snamefrom s, sc
where sc.sno=s.sno and sc.grade>85
sql相關子查詢
3樓:匿名使用者
你這樣寫
sc表中如果s#與c#是一對多or多對多的關係,可能會報錯
從你的語句來看,你現在查詢的是已經選課的學生。因為你最後的查詢條件是sc.c# is not null
為什麼會是多條資料。原因大概是這樣的。你這裡寫的語句,用了sql查詢中乙個很高階的概念。關聯子查詢。它的執行順序是
a.從student表中查詢一條資料m
b.將m放到sc表中根據where s.s#=sc.s#尋找滿足的資料n,然後再在n中根據sc.c# is not null查詢滿足的資料k
c.將k的結果再與主查詢中where s#=相匹配
d.如果k的結果是〉1的,那麼你的語句就會報錯。就算k每次只返回一條資料,也有可能返回重複的資料(因為sc中s#與c#只要不是一對一,就有可能返回重複的資料)
修改**如下
--如果乙個學生有任何一門課沒選課,就返回他的名字
select distinct a.sname from student as a
inner join sc as b on a.s#=b.s#
where b.c# is null
sql的相關子查詢
4樓:傳說中的鷹王
simenyu 的正解。
直接用in肯定是不行的,比學生s2 選修的課程少的也會列出來用not exists 我也無法理解。
這段話:
select * from sc as sc2where s.sno=sc2.sno
and sc2.cno=sc1.cno
是與學生s2選修課程相同的 選課資訊
這段話:
select * from sc as sc1where sc1.sno='s2'
and not exists
(select * from sc as sc2where s.sno=sc2.sno
and sc2.cno=sc1.cno)
如果存在與s2選課相同的資訊,則查出結果為空。
如果不存在與s2選課相同的資訊,則查出結果s2的選課資訊。
最後總體這段話:
select sno,sname
form s
where not exists
(select * from sc as sc1where sc1.sno='s2'
and not exists
(select * from sc as sc2where s.sno=sc2.sno
and sc2.cno=sc1.cno) )如果存在與s2選課相同的資訊,則查出結果所有的學號、姓名資訊。
如果不存在與s2選課相同的資訊,則查出結果為空。
根本不符合題意。不知道是不是我理解錯誤
5樓:匿名使用者
將s2的學生所選修的課程都列出來,將其他學生選的課程名列出來,然後join一下
請教關於SQL隨機查詢問題,請教乙個關於SQL隨機查詢問題
where 成績 330 如果你只是要這個那就不用想了,這個就是對的 要用到隨機函式random 我也不會編完整的 只用sql語句的話,不會 想請教一下delphi和sql連線問題,怎麼能夠產生和接收隨機資料本人 20 sql生成隨機數 result convert bigint,abs check...
怎麼查詢iphone4s啟用時間和是否是翻新機?
裝置型號 iphone 4s 啟用狀態 已啟用。序列號 c8pj60srdtd3 硬體保修到期 2013年09月24日。生產日期 2012年8月 32周 剩餘保修日期 338天保修。客服日期 2012年12月24日。生產地區 中國。全新機。參照以下資訊 設定 通用 關於本機,檢視型號,最後兩位ch為...
工行信用卡查詢是待領卡是制卡成功麼
是在網上申請的吧,這說明你申請的卡應經制卡成功了,網上辦卡的話需要自取,是當時填寫申請表是約定的網點,如果不記得了,也可以打95588查詢,一般情況下都會有簡訊通知領卡的。工商銀行信用卡顯示待領卡何時能取啊 致電95588選擇2人工 2信用卡後查詢一下 已經可以領的話 帶著身份證 營業時間隨時去你填...