最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mysql子查詢(單行子查詢,多行子查詢,多列子查詢)

 更新時(shí)間:2023年06月27日 15:19:46   作者:星星落在海那邊  
本文主要介紹了mysql子查詢(單行子查詢,多行子查詢,多列子查詢),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

子查詢使用規(guī)則:

  • 子查詢放在圓括號(hào)中
  • 子查詢放在比較條件右邊(非強(qiáng)制)
  • 子查詢中不需要ORDER BY 子句
  • 在單行子查詢中使用單行運(yùn)算符,在多行子查詢中用多行運(yùn)算符。
  • 單行運(yùn)算符:子查詢結(jié)果只有一個(gè):< > = <= >= !=
  • 多行子查詢:子查詢結(jié)果是單列多行:in , any,all
  • 多列子查詢:子查詢?yōu)槎嗔?,一定要在FROM后作為表,且一定要取別名,否則無(wú)法訪問這張表中的字段。

創(chuàng)建初始表

CREATE TABLE tbl1 (num1 INT NOT NULL);
CREATE TABLE tbl2 (num2 INT NOT NULL);
INSERT INTO tbl1 VALUES(1),(5),(13),(27);
INSERT INTO tbl2 VALUES(6),(14),(11),(20);

ANY SOME 關(guān)鍵字的子查詢

返回tbl2的所有num2列,將tbl1中的num值與之進(jìn)行比較,只要大于num2的任意一值,即為符合條件的結(jié)果。

SELECT num1 FROM tbl1 
WHERE num1 > SOME(SELECT num2 FROM tbl2);
SELECT num1 FROM tbl1 
WHERE num1 > ANY (SELECT num2 FROM tbl2);

ALL 關(guān)鍵字

SELECT num1 FROM tbl1 
WHERE num1 > ALL (SELECT num2 FROM tbl2);

新建一個(gè)orderitems表

CREATE TABLE orderitems(
o_num INT NOT NULL,
o_item INT NOT NULL,
f_id CHAR(10) NOT NULL,
quantity INT NOT NULL,
item_price DECIMAL(8,2) NOT NULL,
PRIMARY KEY(o_num,o_item)
);

填入數(shù)據(jù)

INSERT INTO orderitems(o_num,o_item,f_id,quantity,item_price)
VALUES(3001,1,'a1',10,5.2),
(3001,2,'b2',3,7.6),
(3001,3,'bs1',5,11.2),
(3001,4,'bs2',15,9.2),
(3002,1,'b3',2,20.0),
(3003,1,'c0',100,10),
(3004,1,'o2',50,2.50),
(3005,1,'c0',5,10),
(3005,2,'b1',10,8.99),
(3005,3,'a2',10,2.2),
(3005,4,'m1',5,14.99);

帶 IN 關(guān)鍵字 的子查詢

#在orderitem表中查詢f_id為c0 的訂單號(hào),并根據(jù)訂單號(hào)查詢具有訂單號(hào)的客戶c_id,SQL語(yǔ)句如下:

SELECT c_id FROM orders
WHERE o_num IN
(SELECT o_num FROM orderitems WHERE f_id = 'c0');

NOT IN

SELECT c_id FROM orders
WHERE o_num NOT IN
(SELECT o_num FROM orderitems WHERE f_id = 'c0');

連接查詢

(也可以解決這個(gè)問題,但有空值,但子查詢更容易閱讀和編寫)

SELECT c_id 
FROM orderitems left JOIN orders
ON orders.o_num = orderitems.o_num 
AND orderitems.f_id = 'c0';

多列子查詢

在 orderitems 表中查詢 f_id 為 c0 的訂單號(hào)的所有信息,并根據(jù)訂單號(hào)查詢具有訂單號(hào)的客戶的所有信息,SQL語(yǔ)句如下:

SELECT * FROM orders ord ,(SELECT * FROM orderitems AS o WHERE f_id&#61;&#39;c0&#39;) ite WHERE ord.o_num&#61;ite.o_num ;

*注意:子查詢結(jié)果為多列,一定在FROM后做為表,且一定要取別名,否則無(wú)法訪問這張表中的字段。

帶比較運(yùn)算符的子查詢

#在suppliers表中查詢s_city等于‘tianjin’的供應(yīng)商s_id,然后在fruits表中,查詢所有非該供應(yīng)商供應(yīng)的水果種類名稱。

SELECT s_id,f_name FROM fruits f
WHERE f.s_id !=
(SELECT s1.s_id 
FROM suppliers AS s1 WHERE s1.s_city = 'tianjin');

帶EXISTS 關(guān)鍵字的子查詢

EXISTS關(guān)鍵字后是任意一個(gè)子查詢:

若至少返回一行,則結(jié)果為True,此時(shí)外層將進(jìn)行查詢。

若沒有返回任何行,則返回的結(jié)果為false,此時(shí)外層語(yǔ)句將不進(jìn)行查詢。
NOT EXISTSEXISTS 的使用方法相同,返回的結(jié)果相反。
查詢suppliers中是否存在s_id 的供應(yīng)商,若存在,則查詢fruits表中所有記錄:

SELECT * FROM fruits 
WHERE EXISTS 
(SELECT s.s_id FROM suppliers AS  s WHERE s.s_id = 107);

返回結(jié)果:

EXISTS也可以和條件表達(dá)式一起使用

例:查詢suppliers中是否存在s_id 的供應(yīng)商,若存在,則查詢fruits表中f_price>10.20的記錄:

SELECT * FROM fruits 
WHERE f_price >10.20 AND EXISTS
 (SELECT s.s_id FROM suppliers AS  s WHERE s.s_id = 107);

 到此這篇關(guān)于mysql子查詢(單行子查詢,多行子查詢,多列子查詢)的文章就介紹到這了,更多相關(guān)MySQL子查詢 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL批量插入唯一索引沖突的幾種避免辦法

    MySQL批量插入唯一索引沖突的幾種避免辦法

    我們?cè)谶M(jìn)行大批量的數(shù)據(jù)插入時(shí),遇到唯一索引沖突是經(jīng)常的事,本文主要介紹了MySQL批量插入唯一索引沖突的幾種避免辦法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-02-02
  • 虛擬主機(jī)中phpMyAdmin的安裝配置方法

    虛擬主機(jī)中phpMyAdmin的安裝配置方法

    phpMyAdmin 是一套可以通過WEB來(lái)管理 MySQL-server 以及單一數(shù)據(jù)庫(kù)的 PHP 程序。對(duì)于一些虛擬空間的站點(diǎn)來(lái)說,應(yīng)該是不可缺少的吧!!!
    2010-06-06
  • Docker部署Mysql數(shù)據(jù)庫(kù)的詳細(xì)步驟

    Docker部署Mysql數(shù)據(jù)庫(kù)的詳細(xì)步驟

    這篇文章主要介紹了如何使用Docker拉取和部署MySQL鏡像,配置鏡像源,修改容器時(shí)區(qū),導(dǎo)入數(shù)據(jù),并通過可視化工具連接和管理數(shù)據(jù)庫(kù),需要的朋友可以參考下
    2025-03-03
  • MySQL的UPDATE(更新數(shù)據(jù))及語(yǔ)法詳解

    MySQL的UPDATE(更新數(shù)據(jù))及語(yǔ)法詳解

    MySQL的UPDATE語(yǔ)句是用于修改數(shù)據(jù)庫(kù)表中已存在的記錄,本文將詳細(xì)介紹UPDATE語(yǔ)句的基本語(yǔ)法、高級(jí)用法、性能優(yōu)化策略以及注意事項(xiàng),幫助您更好地理解和應(yīng)用這一重要的SQL命令,感興趣的朋友跟隨小編一起看看吧
    2025-11-11
  • insert...on?duplicate?key?update語(yǔ)法詳解

    insert...on?duplicate?key?update語(yǔ)法詳解

    本文主要介紹了insert...on?duplicate?key?update語(yǔ)法詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • mysql免安裝沒有任何root權(quán)限

    mysql免安裝沒有任何root權(quán)限

    這篇文章主要介紹了mysql免安裝沒有任何root權(quán)限的安裝與配置教程,本文圖文并茂給大家介紹的非常詳細(xì),需要的朋友參考下
    2017-01-01
  • MySQL運(yùn)維實(shí)戰(zhàn)使用RPM進(jìn)行安裝部署

    MySQL運(yùn)維實(shí)戰(zhàn)使用RPM進(jìn)行安裝部署

    這篇文章主要為大家介紹了MySQL運(yùn)維實(shí)戰(zhàn)使用RPM進(jìn)行安裝部署實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • 使用pt-kill根據(jù)一定的規(guī)則來(lái)kill連接的方法

    使用pt-kill根據(jù)一定的規(guī)則來(lái)kill連接的方法

    pt-kill 是一個(gè)優(yōu)秀的kill MySQL連接的一個(gè)工具,是percona toolkit的一部分,在因?yàn)榭臻e連接較多導(dǎo)致超過最大連接數(shù)、某個(gè)有問題的sql導(dǎo)致mysql負(fù)載很高時(shí),都需要將一些連接kill掉,這個(gè)工具主要就是這個(gè)用途
    2016-04-04
  • Mysql中高效JOIN操作之多表關(guān)聯(lián)查詢實(shí)戰(zhàn)指南

    Mysql中高效JOIN操作之多表關(guān)聯(lián)查詢實(shí)戰(zhàn)指南

    在現(xiàn)代軟件開發(fā)中,數(shù)據(jù)庫(kù)幾乎無(wú)處不在,而多表關(guān)聯(lián)查詢(JOIN)則是我們與數(shù)據(jù)庫(kù)交互的核心操作之一,本文將從JOIN的基礎(chǔ)知識(shí)講起,逐步深入到優(yōu)化技巧和實(shí)戰(zhàn)案例,希望對(duì)大家有所幫助
    2025-08-08
  • MySQL select、insert、update批量操作語(yǔ)句代碼實(shí)例

    MySQL select、insert、update批量操作語(yǔ)句代碼實(shí)例

    這篇文章主要介紹了MySQL select、insert、update批量操作語(yǔ)句代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03

最新評(píng)論

县级市| 连江县| 双鸭山市| 大姚县| 淮阳县| 乌拉特中旗| 天台县| 田东县| 台北市| 科技| 会同县| 尼勒克县| 九江市| 德兴市| 南宁市| 武邑县| 江城| 双江| 依安县| 龙州县| 方城县| 丰原市| 图片| 西充县| 安西县| 白朗县| 新干县| 寿阳县| 固镇县| 永福县| 天台县| 芒康县| 衡山县| 肥西县| 博客| 衡阳县| 陵川县| 漳浦县| 务川| 虎林市| 望江县|