1樓:吳
你好像寫來錯了吧自,,,
我感覺應該是
select sno
from sc
where **o='1' and son in (select sno from sc where **o='2');
或者where **o='1' intersert select sno from sc where **o='2');
intersect對兩個查詢做交集。相當於and
用sql查詢同時選修了1號課和2號課的學生學號
2樓:於曉楠買甘
查詢bai
同時選修了1號和2號課的學du生學號
涉及到兩zhi個表.學生表和dao課程表
語句:select
*from
student
inner
join
scon
student.sno=sc.sno
and**o
in('1','2')
為什麼不用內where
**o=』1『
and**o=』2『
這個關係到資料容庫的優化問題,哪個執行快,就寫哪個那個語句也可以這樣寫啊where
snoin
(select
snofrom
scwhere
sno=』1『
)and
snoin(select
snofrom
scwhere
sno=』2『)
3樓:吳
你好抄像寫錯了吧,襲
,,我感覺應該是bai
select sno
from sc
where **o='1' and son in (select sno from sc where **o='2');
或者where **o='1' intersert select sno from sc where **o='2');
intersect對兩個du查詢zhi做交集。相當於daoand
4樓:envy誒
因為這樣的意思是 在一行內課號既得等於1又得等於2 並沒有這樣的
5樓:匿名使用者
sno 指的是什麼?
bai**o指什麼? 上面的sql語句du是不可能zhi實現同樣的功能的。
sno如果是指dao學生學號;版
**o是指課程號的權
話。where **o=』1『 and **o=』2『是指課程號是1和2 的學生資訊。
where sno=』1『 and sno in(select sno
from sc
where sno=』2『)
是指學生學號是1和2 的學生,事實上,作為主鍵的sno沒有可能同時是1和2的。
請採納答案,支援我一下。
sql資料庫中查詢選修了所有課程的學生的學號和姓名及選修門數
6樓:騰訊電腦管家
select s.sname, s.s*** , s.
sage, s.sdept c.**ame g.
grade from student s , course c ,grade g where s.sno = g.sno and g.
**o = c.**o;
7樓:站在風中望著你
??????????????????????????你好,sql是什麼
資料庫sql語句中 查詢選修了全部課程的學生的學號和姓名 理解
8樓:匿名使用者
這思路是用了個雙重否定來求解的。因為sql中沒有全稱量詞,於是要把題目轉換成等價的存在量詞表達形式。即根據(∀x)p≡¬∃(¬p)來轉化為雙重否定的表達。
同時由於「學生x選修課程y 」
之間是不定的,需要使用兩個exist。
於是「選修了全部課程的學生」等價於「不存在(有他沒選的課的)學生」
使用了兩次not exists來實現雙重否定。
先查詢在課程裡查詢「沒有學生選的課程」,第一次否定,
然後再在學生裡查詢「沒有屬於上面情況的學生」的名字,第二次否定;
結合起來,就是 「沒有(沒選的課程)的學生」了。
好了,從裡到外寫出來,就是
select sname from student where not exists(
select * from course where not exists(
select * from sc where sno=student.sno and **o=course.**o
))這個只不過是逆向思維來解決問題的方法。舉一反三,比如要查「被全部學生都選的課程名」
則是求「不存在有學生沒選它的課程」
select **ame from course where not exists(
select * from student where not exists(
select * from sc where sno=student.sno and **o=course.**o
))再如,查「所有人都沒選修的課程」,這個雖然是單次否定了,但仍需要兩個存在量詞表述。
等價於查詢「不存在有學生選了它的課程」。
select **ame from course where not exists (
select * from student where exists (
select * from sc where **o=course.**o and sno=student.sno))
9樓:風嘯無名
沒有資料庫難以具體說明,總的來說,就是一個多表查詢包括學生基本資訊表、課程資訊表、成績表等,學號為主鍵,查詢姓名和課程、分數等資訊,總分用sum算。
1 。 exists 子查詢找到的提交
not exists 子查詢中 找不到的提交說明:不要去翻譯為存在和不存在,把腦袋搞暈。
2 。 建立程式迴圈的概念,這是一個動態的查詢過程。如 for迴圈 。
3 。 exists執行的流程exists首先執行外層查詢,再執行記憶體查詢,與in相反。 流程為首先取出外層中的第一元組, 再執行內層查詢,將外層表的第一元組代入,若內層查詢為真,即有結果時。
返回外層表中的第一元 組,接著取出第二元組,執行相同的演算法。一直到掃描完外層整表 。
10樓:月光雪松
樓主彆著急!
為好理解我們先從這條sql語句所要實現的功能入手。
功能:查出選修了全部課程的學資訊。那麼sql在查詢資料的時候的遍歷每一個學生資訊。判斷該學生是否滿足條件。
1 如果存在這麼一條course記錄a(暫命名為a), 則不選擇該學生。否則該學生就被查詢出來
2 那麼記錄a,是怎麼查出來的呢?a查出的條件是:不存在sc記錄b,只要不存在b,就可查出a
3 那麼b記錄是什麼?b記錄是選課資訊表,根據學號和課程號可查出記錄b
如果b為空(該學生有沒有選的課程)也就是不存在,則a就有一條記錄,根據規則2可知:因為有a,所以該學生資訊將不被輸出。
如果在sc中每一個課程編號和該學生編號為條件都能夠查出一條記錄b(也就是該學生選修了全部課程),所以a記錄不存在,則輸出該學生的資訊。
也就是在選課表中,如果學生選了全部課程(也就是滿足select * from sc where sno= student.sno and **o= course.**o)始終存在,當然,課程編號是任意的)。
那麼就輸出該學生的資訊。你不要為理解這條sql而忘記了它本身是要做什麼.
帶著sql的目的(要實現的功能)去理解就好了。
11樓:雨夜的緣分
1,select * from sc where sno= student.sno and **o= course.**o
在sc表中查詢符合sno= student.sno and **o= course.**o這兩個條件的所有資料,
2,select * from course where not exists (select * from sc where sno= student.sno and **o= course.**o);這句的意思是在course表中查詢不滿足1,中的所有資料
3,select sname from student where not exists (select * from course where not exists (select * from sc where sno= student.sno and **o= course.**o));
這整句的意思就是查詢student表中所有不滿足2,資料,就是選修了全部課程的學生了
只所以會有這麼多查詢,可能sno= student.sno and **o= course.**o這兩個條件是是sc表查詢的條件分散在另外兩個表中,引用了雙重否定,也就是肯定的意思,達到可以讓student.
sno ,course.**o,在sc表中作為條件的目的
夠詳細吧!!!!
sql查詢沒有同時選修1號課程和2號課程學生的學號
12樓:匿名使用者
select distinct sno
from sc
where sno not in
(select sno
from sc
where **o='1' and sno in(select sno
from sc
where **o='5'))
這是一般的變法,還可用集合查詢,關鍵字intersectselect distinct sno
from sc
where sno not in
(select sno
from sc
where **o='1'
intersect
select sno
from sc
where **o='5')
13樓:匿名使用者
select s.學號
from student s,course c,sc scwhere s.學號=sc.學號 and c.課程號=sc.課程號 and
c.課程號='1'
union
select s.學號
from student s,course c,sc scwhere s.學號=sc.學號 and c.課程號=sc.課程號 and
c.課程號='2'
14樓:凌動小生
select distinct sc.sno where sc.**o !='課程1'and sc.**o !='課程2'
15樓:匿名使用者
select sno where [sc] **o='選修1號' and **o='選修2號' order by sno
sql查詢選修了兩門以上(包括兩門)課程的學生資訊
16樓:袁丙漢
昨天面試才看到這道題
select distinct s.id , s.namefrom close_class c
left join student s
on s.s_id = c.s_id
where count(c.id)>1
sybase資料庫 如何使用sql語句查詢,資料庫容量大小和
sybase公司是世界著名的資料庫廠家,其關聯式資料庫產品sybase sql server在中國大中型企事業單位中擁有大量的使用者。針對獲取資料庫相關資訊也提供了對應的api,以便管理進行維護。一 sp spaceused 可看到資料庫空間包括日誌 對應資料庫 開啟sql advantage 對話...
sql資料庫時提示物件名無效,SQL資料庫時提示物件名 XXX 無效
原因一 新建的資料庫,沒有將初始資料匯入到新庫裡。解決方法 資料庫做了遷移後,一般會進行匯入 還原資料的過程,在這個過程中,要注意新資料庫的完整物件名與原來是一致的。比如,您的舊資料庫名叫 db1 舊資料庫使用者是 dbuser1,現在要遷移到新的資料庫上,新資料庫名是 db2,新資料庫使用者是 d...
C在SQL資料庫中模糊查詢的難題
不是道你的加密演算法裡是以幾個字元為單位加密的,不過如果你的sql資料庫所在的伺服器夠強勁的話,寫個儲存過程來替代系統的模糊查詢吧。用你的加密演算法是不是 林 這個字每次加密完了值都是一樣,如果是,就查詢的時候把條件也加密再模糊查詢唄 你這是escape編碼的吧。你可以在匹配的時候把資料庫裡的解碼一...