MySQL查詢語句(五) 子查詢

2021-09-26 01:52:02 字數 1329 閱讀 4330

mysql查詢語句(四)——order by與limit

把查詢語句的結果當where的判斷條件進行查詢,子查詢的結果為單列。

1、查出本**最新的(goods_id最大)的一條商品

使用排序:按照goods_id、desc排序,再取第一行

mysql> select goods_id,goods_name from goods order by goods_id desc limit 1;
不用排序

mysql> select max(goods_id),goods_name from goods;

mysql> select goods_id,goods_name from goods where goods_id=(select max(goods_id) from goods);

2、把每個欄目下goods_id最大的商品查出來

mysql> select goods_id,goods_name from goods where goods_id in (select max(goods_id) from goods group by cat_id);
查詢結果集在結構上可以當表輸入繼續進行查詢

3、取出每個欄目**最高的商品

mysql> select cat_id,shop_price from (select cat_id,goods_name,shop_price from goods order by cat_id,shop_price desc)  as tmp group by cat_id;
把外層sql的結果拿到內層去測試,如果內層的sql成立則該行取出。

4、查出有商品的欄目(有的欄目下是其他子欄目)

條件:設某欄目cat_id為n,則select * from goods where cat_id=n為真時表示該欄目有商品

category為一張儲存了欄目資訊的表

mysql> create table category( cat_id int auto_increment primary key, cat_name varchar(20) not null default '' )engine myisam charset utf8;

query ok, 0 rows affected (0.00 sec)

mysql> select cat_id,cat_name from category where exists (select * from goods where goods.cat_id=category.cat_id);

Mysql基礎入門(五)子查詢

有如下表,現要求編寫sql語句,檢視年齡比 李斯文 小的學生,要求顯示這些學生的資訊 紅框中的學生是比李斯文年齡小的學生。第一步 查詢得到 李斯文 的出生日期 select borndate from student where studentname 李斯文 1993 07 03第二步 利用whe...

mysql子查詢語句多列 MySQL 子查詢

對於下表,1.場景 查詢代課天數最多的老師的資訊。方法一 select from teacher order by days desc limit 1 該方法有漏洞 授課天數最多的老師實際上有兩位 hanna和luna。直接設定limit 1會限制只輸出1位老師。而實際我們不知道有幾個代課最多的老師...

Mysql採用子查詢優化查詢語句,提高查詢效率

摘要 mysql的優化方式有很多,這裡我先介紹一種,就是在使用連線查詢中的優化。案例 比如我要查詢100萬條資料中id小於100的資料,a表和b表有相同的字段id,那麼id就可以成為連線查詢的條件。如下所示 select from a join b on a.id b.id where id 100...