Mysql基礎:子查詢(where) ,select完整語法


-- 子查詢
-- 本質:在where語句中嵌套一個子查詢語句,最后返回給where里的是一個值

-- 子查詢
-- 本質:在where語句中嵌套一個子查詢語句,最后返回給where里的是一個值
-- =========where===============
-- 1.查詢高等數學-1的所有考試結果(學號,科目編號,成績),降序排列
SELECT studentno,r.subjectno,studentresult
FROM result r
INNER JOIN `subject` sub
ON r.subjectno=sub.subjectno
WHERE subjectname='高等數學-1'
order by studentresult DESC

-- 方式二:使用子查詢(由里及外)
SELECT `studentno`,`subjectno`,`studentresult`
FROM result
WHERE subjectno=(
    SELECT subjectno FROM `subject`
    WHERE subjectname='高等數學-1'
)
-- 查詢所有高等數學-1的 學生學號
-- SELECT subjectno FROM `subject` WHERE subjectname='高等數學-1'


-- 練習,查詢分數不小於80分的學生的學號和姓名
SELECT s.studentno,studentname
FROM student s
INNER JOIN result r
ON s.studentno=r.studentno
where studentresult>=80 AND subjectno=(SELECT subjectno FROM `subject` WHERE subjectname='高等數學-1')

-- 在這個基礎上增加科目,高等數學-2(查詢高等數學-2的編號)
-- SELECT subjectno FROM `subject` WHERE subjectname='高等數學-1'

-- 有趣的寫法(看懂了證明子查詢這一塊學會了,不過還是推薦用多表查詢)
SELECT studentno,studentname FROM student WHERE studentno in(
    SELECT studentno FROM result WHERE studentresult>80 AND subjectno=(
                select subjectno FROM `subject` WHERE subjectname='高等數學-1'
    )
)

 練習

-- 練習:查詢c語言-1前3名同學的成績的信息(學號,姓名,分數)
-- 使用子查詢
SELECT studentno,studentname FROM student WHERE studentno in(
    SELECT studentno FROM result WHERE (SELECT subjectno FROM `subject` WHERE subjectname='C語言-1' )
    order by studentresult DESC 
)
LIMIT 0,3

select完整語法

-- select完整語法
SELECT [ALL|DISTINCT]
{*|table *|[table.field1[as a]ias1][,table.field2[as alias2]][.....]}
FROM table_name[as table_alias]
    [left|right|inner join table_name2]-- 聯合查詢
    [where....]-- 指定結果須滿足的條件
    [GROUP BY....]-- 指定結果按照那幾個字段來分組
    [HAVING]-- 過濾分組記錄必須滿足的次要條件
    [ORDER BY....]-- 指定查詢一個記錄按一個或者多個排序
    [LIMIT 0,3]-- 指定查詢記錄‘0’為起始位置,‘3’為末尾位置

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM