中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么分析Mysql中的嵌套子查詢問題

發布時間:2022-01-27 13:25:20 來源:億速云 閱讀:163 作者:柒染 欄目:開發技術

小編今天帶大家了解怎么分析Mysql中的嵌套子查詢問題,文中知識點介紹的非常詳細。覺得有幫助的朋友可以跟著小編一起瀏覽文章的內容,希望能夠幫助更多想解決這個問題的朋友找到問題的答案,下面跟著小編一起深入學習“怎么分析Mysql中的嵌套子查詢問題”的知識吧。

Mysql嵌套子查詢

子查詢就是指的在一個完整的查詢語句之中,嵌套若干個不同功能的小查詢,從而一起完成復雜查詢的一種編寫形式,為了讓讀者更加清楚子查詢的概念。

子查詢返回結果
子查詢可以返回的數據類型一共分為四種:

  • 單行單列:返回的是一個具體列的內容,可以理解為一個單值數據;

  • 單行多列:返回一行數據中多個列的內容;

  • 多行單列:返回多行記錄之中同一列的內容,相當于給出了一個操作范圍;

  • 多行多列:查詢返回的結果是一張臨時表;

在WHERE子句中使用子查詢

在WHERE子句之中處理單行單列子查詢、多行單列子查詢、單行多列子查詢。

單行單列子查詢

**示例一、**查詢公司之中工資最低的雇員的完整信息

--查詢公司之中工資最低的雇員的完整信息
SELECT * 
FROM emp e
WHERE e.sal=(
  SELECT MIN(sal) 
  FROM emp);

**示例二、**查詢出基本工資比ALLEN低的全部雇員信息

-- 查詢出基本工資比ALLEN低的全部雇員信息
SELECT * 
FROM emp e
WHERE e.sal<(
 SELECT sal 
 FROM emp 
 WHERE ename='ALLEN'
);

**示例三、**查詢基本工資高于公司平均薪金的全部雇員信息

--查詢基本工資高于公司平均薪金的全部雇員信息
SELECT *
FROM emp e
WHERE e.sal>(
SELECT AVG(sal)
FROM emp);
單行多列子查詢。

**示例四、**查找出與ALLEN從事同一工作,并且基本工資高于雇員編號為7521的全部雇員信息,

--查找出與ALLEN從事同一工作,并且基本工資高于雇員編號為7521的全部雇員信息,
SELECT *
FROM emp e
WHERE e.job=(
  SELECT job
  FROM emp 
  WHERE ename='ALLEN') 
  AND e.sal>(
  SELECT sal
  FROM emp 
  WHERE empno=7521);

**示例五、**查詢與SCOTT從事同一工作且工資相同的雇員信息

SELECT *
FROM emp e
WHERE (e.job,e.sal) = (
  SELECT job,sal
  FROM emp 
  WHERE ename='SCOTT')
  AND ename<>'SCOTT';

**示例六、**查詢與雇員7566從事同一工作且領導相同的全部雇員信息

  --查詢與雇員7566從事同一工作且領導相同的全部雇員信息
SELECT *
FROM emp e
WHERE (e.job,e.mgr) =(
        SELECT job,mgr
        FROM emp
      WHERE empno=7566
);

**示例七、**查詢與ALLEN從事同一工作且在同一年雇傭的全部雇員信息(包括ALLEN)

--查詢與ALLEN從事同一工作且在同一年雇傭的全部雇員信息(包括ALLEN)
SELECT *
FROM emp e
WHERE (e.job,to_char(e.hiredate,'yyyy'))=(
           SELECT job,to_char(hiredate,'YYYY')
            FROM emp
            WHERE ename='ALLEN'
);
多行單列子查詢

主要使用三種操作符:IN、ANY、ALL

IN操作

**示例八、**查詢出與每個部門中最低工資相同的全部雇員信息

--查詢出與每個部門中最低工資相同的全部雇員信息
SELECT *
FROM emp e
WHERE e.sal IN(
     SELECT MIN(sal)
    FROM emp
    GROUP BY deptno
);

**示例九、**查詢出不與每個部門中最低工資相同的全部雇員信息

--查詢出不與每個部門中最低工資相同的全部雇員信息
SELECT *
FROM emp e
WHERE e.sal NOT IN(
     SELECT MIN(sal)
    FROM emp
    GROUP BY deptno
);

FROM子查詢:

FROM字句以后跟上的數據來源不僅是數據表,還能夠是一個查詢結果,這就是FROM子查詢
通常FROM子查詢的返回類型的多行多列的結果集javascript

查詢出平均工資高于2000的職位名稱以及該職位的平均工資java

第一種方式:能夠使用HAVING字句實現

SELECT job,AVG(sal)
FROM emp
GROUP BY job
HAVING AVG(sal)>2000;

第二種方式:使用FROM子查詢

SELECT job,avgsal
FROM (
  SELECT job,AVG(sal) AS avgsal
    FROM emp
      GROUP BY job) temp
WHERE temp.avgsal>2000;

查詢出有傭金的而且工資高于傭金的員工信息:web

SELECT e1.empno,e1.ename,e1.comm,e2.sal
FROM emp e1,emp e2
WHERE e1.comm IS NOT NULL AND e1.comm<e2.sal
AND e1.empno=e2.empno;

總結:

1.FROM 子查詢的數據來源是另一個查詢的結果,這個子查詢的結果至關于一張臨時數據表

2.必須為子查詢定義別名

3.若是要使用子查詢中的字段,則應該使用"別名.字段名"的方式進行引用

select子查詢

select后面的子查詢使用,只能是標量查詢

#案例:查詢每個部門的員工個數

SELECT d.*,(
    SELECT COUNT(*)
    FROM employees
    WHERE employees.`department_id`=d.department_id
)

FROM
    departments d;

#案例:查詢員工號=102的部門名

SELECT department_name
FROM
employees e
INNER JOIN
    departments d
ON
    e.`department_id`=d.`department_id`
WHERE
    e.`employee_id`=102;

用子查詢

SELECT (
SELECT department_name
FROM
    employees e
INNER JOIN
    departments d
ON
    e.`department_id`=d.`department_id`
WHERE
    e.`employee_id`=102
);
`department_id`=d.`department_id`
WHERE
    e.`employee_id`=102;

用子查詢

SELECT (
SELECT department_name
FROM
    employees e
INNER JOIN
    departments d
ON
    e.`department_id`=d.`department_id`
WHERE
    e.`employee_id`=102
);

感謝大家的閱讀,以上就是“怎么分析Mysql中的嵌套子查詢問題”的全部內容了,學會的朋友趕緊操作起來吧。相信億速云小編一定會給大家帶來更優質的文章。謝謝大家對億速云網站的支持!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

栾城县| 临漳县| 定州市| 屏南县| 韶山市| 望奎县| 永寿县| 进贤县| 永善县| 营山县| 教育| 乌拉特中旗| 阜阳市| 昌邑市| 平陆县| 阿克陶县| 息烽县| 沙坪坝区| 神池县| 遂宁市| 江孜县| 遵义县| 巴林右旗| 兖州市| 北流市| 会宁县| 霍林郭勒市| 武汉市| 大渡口区| 阿克| 金塔县| 福海县| 灵丘县| 清河县| 彰化县| 油尖旺区| 通化市| 汾西县| 西宁市| 承德市| 毕节市|