mysql多个子查询_mysql(5)多表--子查询
商品分類==goods cate、商品品牌==brand name、是否上架==is_show、是否銷售一空==is_saleoff
【子查詢--subquery】
子查詢是指出現在其他sql語句內的select子句;子查詢指嵌套在查詢內部,且必須始終出現在圓括號內。
例如:SELECT * FROM t1 WHERE col1=(SELECT col2 FROM t2);
其中,SELECT * FROM t1,稱為Outer Query/Outer Statement //------外層查詢
SELECT col2 FROM t2,稱為SubQuery //----子查詢
子查詢可以包含多個關鍵字或條件,如DISTINY、GROUP BY、ORDER BY、LIMIT、函數等。
子查詢的外層查詢可以是:SELECT、INSERT、UPDATE、SET、或DO(外層查詢:SQL語句的統稱;)
【子查詢返回值】子查詢可以返回標量、一行、一列或子查詢。
---------------------------------------------------------------------------
【使用比較運算符的子查詢】 =、>、=、<=、<>、!=、<=>
【注意】如果子查詢在返回多個結果的時候,可以用ANY、SOME、或ALL修飾的比較運算符
語法結構:
operand comparison_operator subquery
例子:SELECT AVG(goods_price) FROM tdb_goods; //-----某表商品價格平均值
例子2:SELECT ROUND( AVG(goods_price),2) FROM tdb_goods; //------對平均值得到的結果四舍五入保留后2位
例子3:SELECT goods_id,goods_name,goods_price FROM tdb_goods WHERE goods_price>=5636.36;
***當例子2、例子3合并時候,且平均值為5636.36時
SELECT goods_id,goods_name,goods_price FROM tdb_goods WHERE goods_price>=(SELECT ROUND( AVG(goods_price),2) FROM tdb_goods;
例子:SELECT goods_id,goods_name,goods_price FROM tdb_goods WHERE goods_priceANY (SELECT ROUND( AVG(goods_price),2) FROM tdb_goods; //-------- 比最小值大的值
----------------------------------------------------------------------------------------------------------------------------
【由[NOT] IN-EXISTS引發的子查詢】
(1)IN、NOT IN
語法結構:operand comparison_operator [NOT] IN(subquery)
“=ANY” 運算符與IN等效。
“!=ALL” 或“<>ALL”運算符與NOT IN等效。
(2)[NOT] EXISTS
如果子查詢返回任何行,EXISTS將返回TRUE;否則為FALSE;
----------------------------------------------------------------------------------------------------------------------------
【INSERT...SELECT】------------將查詢的結果寫入到數據表
INSERT [INTO] tb1_name [(col_name,...)] SELECT...
例子:INSERT tdb_goods_cates(cate_name) SELECT goods_cate FROM tdb_goods GROUP BY goods_cate;
總結
以上是生活随笔為你收集整理的mysql多个子查询_mysql(5)多表--子查询的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql根据父级编码得到父级内容_在m
- 下一篇: mysql锁机制为何设计如此复杂_再谈m