㈠ sql語句 查詢至少選修了與某個同學選修的課程相同的學生學號
SELECT 學號
FROM 學習
WHERE 課程號 IN (SELECT t5.課程號
FROM 學院 t1, 學生 t2, 教師 t3, 課程 t4, 學習 t5, 開課 t6
WHERE t1.學院代碼 = t2.學院代碼
AND t2.學院代碼 = t3.學院代碼
AND t2.學號 = t5.學號
AND t3.教師號 = t6.教師號
AND t4.課程號 = t5.課程號
AND t4.課程號 = t6.課程號
GROUP BY t5.課程號
HAVING COUNT(T5.學號) >= 2)
㈡ 「查詢某門課程考試成績相同的學號和課程名」的SQL語句
select a.學號,a.課程名,b.學號
from XX表 a
where a.課程名=b.課程名 and a.成績=b.成績
㈢ 在sql中,怎樣的語句得到選課學生的學號。(注意去掉重復的學號)
select distinct 學號 from 選課表
或
select 學號 from 選課表 group by 學號
㈣ SQL:在學生選課表中查詢與某一學生選相同課程的學生的學號
SELECT studid FROM transcript where crscode = 'xx'
xx代表那個相同課程的課程號。。。。
㈤ 如何查詢出sql資料庫中表中重復的數據。又如何選其中一個進行更新操作
通過 group by 查詢sql資料庫中表中重復的數據
如:查詢姓名相同的學生姓名
select s_name from s_table group by s_name having count(1)>1
至於如何選其中一個進行更新操作,你可以通過
select sno,a.s_name //獲得學號和姓名
from s_table inner join ( select s_name from s_table group by s_name having count(1)>1)a on a.s_name=s_table.s_name 查詢到相同姓名(假如名字是張三)的不同學號(假如學號分別為0001,0002),然後利用學號進行更新操作
如:update s_table
set s_name='李四',
where sno='0001'
㈥ SQL查詢中,查3個表中的數據,其中學號是相同的,查出結果學號項重復了,怎麼去掉,有簡單的方法嗎
你select輸出用的*吧,這個沒什麼簡單的方法,只能一個一個把欄位寫上
如果嫌麻煩,可以用系統圖表把欄位列出來與逗號拼接,然後粘貼出來放在select後面
㈦ 用sql語句查詢與學號為123的學生在A課程中得分相同的學生的學號及姓名,請指點。
select 學號,姓名 from 表 where 成績=(select 成績 from 表 where 學號='123' and 課程='A')and 課程='A'
㈧ 怎樣查詢一個表:學號+科目組成的值重復的數據
貌似你想要用人工篩選的方法去掉重復的成績記錄,比較復雜的說。
要是隨留一條的話,select distinct就行,留第一條。
要是人工選擇的話,就成了學生、科目、成績三維數據尋找二維重復問題了。需要兩重循環,最好在外部程序中實現。支持循環語句的dbms也能寫出sql查詢,比較麻煩。
人比較笨,想不出別的好辦法了……
㈨ sql查詢兩個欄位相同的記錄
EXCEL中用VBA連接ACCESS資料庫
有如下一張表,要分別查找出所有同名的人、所有同名並且學號也一樣的人以及所有同名但不同學號的人。
查詢所有同名人員
select * from [18年考試成績] where [姓名] in (SELECT [姓名] FROM [18年考試成績] group by [姓名] having count(姓名)>1)
查詢結果:
查找所有姓名和學號兩個欄位都重復的人
select * from [18年考試成績] where [姓名] in (SELECT [姓名] FROM [18年考試成績] group by [姓名] having count(姓名)>1) and [學號] in (SELECT [學號] FROM [18年考試成績] group by [學號] having count(學號)>1)
查詢結果:
查找所有姓名重復但學號不重復的人
select * from [18年考試成績] where [姓名] in (SELECT [姓名] FROM [18年考試成績] group by [姓名] having count(姓名)>1) and [學號] not in (SELECT [學號] FROM [18年考試成績] group by [學號] having count(學號)>1)
注意:要把SELECT查詢子句配合in或not in 操作符使用,SELECT查詢子句只能有一列內容。
查詢結果:
其中子句 「SELECT [姓名] FROM [18年考試成績] group by [姓名] having count(姓名)>1」是顯示所有重復的姓名,如果如下:
如果要知道重復出現次數,則可以這樣寫:
SELECT [姓名],count(姓名) as 出現次數 FROM [18年考試成績] group by [姓名] having count(姓名)>1
結果如下:
查找唯一記錄
group by [姓名],意思是按姓名分組,having count(姓名)>1 是分組條件,意思是姓名次數出現2次以上的重復內容以姓名進行分組,前面的count(姓名)是對分組以後的姓名統計出現次數。在後面要使用函數條件時應該使用having,而不是使用where
查找唯一值,比如本例的班級中,只有一個「四班」,要把這個四班的所有欄位顯示出來可以這樣:
select * from [18年考試成績] where 班級 not in (SELECT 班級 FROM [18年考試成績] group by 班級 having count(班級)>1)
結果:
如果使用「SELECT DISTINCT 班級 FROM [18年考試成績]」語句查詢唯一值,結果將會如下:
DISTINCT 會顯示不重復的值,如果有重復的,只顯示第一個,所以如果需要顯示僅出現一次的值並不適合使用SELECT DISTINCT語句
分組查詢語句:
比如要班級為單位,查詢每個班的總人數,科目總分,科目平均分等
SELECT [班級],count(姓名) as 班級人數,sum(語文) as 語文總成績,sum(數學) as 數學總成績,ROUND(avg(語文),1) as 語文平均分,ROUND(avg(數學),1) as 數學平均分 FROM [18年考試成績] group by [班級]
查詢結果如下:
注意:如果使用函數的欄位,不使用AS指定別名,將會自動生成一個欄位名,第一列名字Expr1000,第二列名為Expr1001,第三列名為Expr1002,以此類推
如:
SELECT [班級],count(姓名),sum(語文),sum(數學),ROUND(avg(語文),1) ,ROUND(avg(數學),1) FROM [18年考試成績] group by [班級]
查詢結果如下:
如果不指定別名,你將無法清楚在查詢結果中知道每一列是干什麼的。
如果需要再細分,查詢每個班女生總人數和科目平均分,只需要再加一個where條件就可以了
SELECT [班級],count(姓名) as 班級女性人數,ROUND(avg(語文),1) as 語文平均分,ROUND(avg(數學),1) as 數學平均分 FROM [18年考試成績] where 性別='女' group by [班級]