1. 程式人生 > >mysql 複雜sql子查詢的例項

mysql 複雜sql子查詢的例項

在我們的實際專案中,有時候需要寫一下資料彙總和查詢,哪麼子查詢就必不可少。

比如我現在有三張表:

lch_resource_attribute,idx_lch_resource_category,lch_resource_games

那麼我現在要查詢某個應用的子分類的話,用 left join on左連線

select l.game_id as 應用id,l.title as 主分類,m.title as 次分類 from (select * from (SELECT a.game_id, GROUP_CONCAT(b.title) as title FROM `lch_resource_attribute` AS b 
,`idx_lch_resource_category` AS a WHERE ((b.id = a.category_id or b.id =a.parent_id) and level = 1) AND b.status =1 and a.game_status = 1 group by a.game_id order by 
a.game_id asc) as g) as l left join (select * from (SELECT e.game_id, GROUP_CONCAT(d.title) as title FROM `lch_resource_attribute` AS d ,`idx_lch_resource_category` AS 
e WHERE ((d.id = e.category_id or d.id =e.parent_id) and level = 2) AND d.status =1 and e.game_status = 1 group by e.game_id order by e.game_id asc) as k) as m on 
l.game_id = m.game_id order by l.game_id;

結果如下:
+----------+--------------------------------------------------------+------------------------------+
|應用id   | 主分類                                                 | 次分類                       |
+----------+--------------------------------------------------------+------------------------------+
|        1 | 消消樂                                        | NULL                         |
|        3 | 卡牌,撲克也,智,休                      | 休智,閒                |
|        4 | 跑酷                                                   | NULL                         |
|        5 | 卡牌,訊息好                                    | NULL                         |
|        8 | 2.1,仙劍                                           | NULL                         |
|        9 | 2.1,公共                                           | NULL                         |
|       10 | 冒險,籃球                                              | NULL                         |
|       12 | 網遊卡牌,也不錯                  | 卡戲,撲錯          |
|       14 | 冒幻                                          | NULL                         |
+----------+--------------------------------------------------------+------------------------------+

查詢應用基本資訊(包含大小和上線時間),主分類和次分類,這個時候就要先查詢主分類和次分類,然後在查應用屬性。
select k.id, k.name, k.package, k.company, k.developer,k.link,k.size,k.online_time, g.c_title as 主分類,g.s_title as 次分類 from (select * from (SELECT c.id, c.name, 
c.package, c.company, 
c.developer, p.link,p.size, FROM_UNIXTIME(p.update_time) as online_time FROM 
`lch_resource_games` AS c, `idx_lch_resource_version` AS p WHERE c.id = p.game_id AND p.status =1 order by c.id asc) as f) as k, (select * from (select 
l.game_id,l.title as c_title,m.title as s_title from (select * from (SELECT a.game_id, GROUP_CONCAT(b.title) as title FROM `lch_resource_attribute` AS b 
,`idx_lch_resource_category` AS a WHERE (b.id = a.category_id or b.id =a.parent_id) AND b.status =1 and a.game_status = 1 group by a.game_id order by a.game_id asc) as 
g) as l left join (select * from (SELECT e.game_id, GROUP_CONCAT(d.title) as title FROM `lch_resource_attribute` AS d ,`idx_lch_resource_category` AS e WHERE ((d.id = 
e.category_id or d.id =e.parent_id) and level = 2) AND d.status =1 and e.game_status = 1 group by e.game_id order by e.game_id asc) as k) as m on l.game_id = m.game_id 
order by l.game_id) as h) as g where k.id= g.game_id order by k.id desc;
執行的結果如下:
+-----+-----------------+----------------------+------------------+-----------+--------+---------------------+------------------------------+---------------------+
| id  | name            | package              | company          | developer | size   | online_time         | 主分類                       | 次分類              |
+-----+-----------------+----------------------+------------------+-----------+--------+---------------------+------------------------------+---------------------+
| 374 | doufuyy3        | com.doufuyuyue5.am   |

[email protected] | aaaaa      |   0.30 | 2016-03-10 15:20:37 |策,坦克   | 擊,坦克       |
| 373 | 約3       | com.doufuyuyue3.am   | [email protected] | bbbb     |   3.67 | 2016-03-09 18:18:07 |動作,RPG                  | RPG             |
| 372 | 影之刃          | com.yzr.am           | [email protected] | cccc    | 157.88 | 2016-01-19 10:25:37 |略                      | NULL                |
| 371 | 2       | com.doufu.yuyuecc.am | [email protected] | ddddd      |   0.30 | 2016-03-09 10:23:26 |略,RPG            | RPG             |
| 370 | 帶付      | com.doufusdk.am      | [email protected] | eeee      |   4.59 | 2016-03-02 16:16:32 |動,遊戲                  | RPG            |
+-----+-----------------+----------------------+------------------+-----------+--------+---------------------+------------------------------+---------------------+

這樣就查出結果了,整個思路也就出來了。

相關推薦

mysql 複雜sql查詢例項

在我們的實際專案中,有時候需要寫一下資料彙總和查詢,哪麼子查詢就必不可少。 比如我現在有三張表: lch_resource_attribute,idx_lch_resource_category,lch_resource_games 那麼我現在要查詢某個應用的子分類的話,用

圖解SQL查詢例項

1 建立示例表 先建立示例表; ------------------------- -- Create Customers table ------------------------- CREATE TABLE Customers ( cust_id cha

mysql buglist上關於SQL查詢注入的郵件列表

[11 Aug 2016 15:38] Sinisa Milivojevic Hi! You are using rand() in both a select list and in the group list. That can create huge runtime

sql 查詢(mysql)

子查詢:一個查詢巢狀在另一個查詢當中;又叫內部查詢。 子查詢 可以分為: 單行單列(就是一個值) 單行多列(就是有一行,這一行有很多不同列資料) 多行單列(同一列不同的資料) 多行多列(可以說就是一張表了吧) 我們先來看單行單列的子查詢: SE

sql查詢

編寫 min style side lower any 編號 示例 操作 子查詢就是指的在一個完整的查詢語句之中,嵌套若幹個不同功能的小查詢,從而一起完成復雜查詢的一種編寫形式,為了讓讀者更加清楚子查詢的概念。子查詢返回結果子查詢可以返回的數據類型一共分為四種:單行單列:返

mysql in型查詢陷阱

秒級 tab lai sql 一對一 語句 lec 掃描 主鍵 現在有兩個表,table1和table2,table1有1千萬數據(id 主鍵索引),table2有三條數據(uid字段 3,5,7); select * from table1 where id in

SQL 查詢

單個 調用 不依賴 相關子查詢 date 1.2 like p s tid SQL支持在查詢中編寫查詢,或者嵌套其他查詢。最外層查詢的結果集會返回給調用者,稱為外部查詢。內部查詢的結果是提供給外部查詢使用的,也成為子查詢。 子查詢可以分為獨立子查詢和相關子查詢兩類。獨立子

MySQL教程 SQL基礎查詢

內存 tab 聯合 檢索 並不是 分組 某個字段 運算 roo 其實在數據庫最經常用的當屬查詢操作 基本語法 SELECT [ALL | DISTINCT | DISTINCTROW ] 字段列表 AS 字段別名 [FROM 表名

【沫沫金】Sql查詢Not In 無結果原因

空值 blog mar 執行 sel ges 期望 ima 數值 背景源碼 select * from ITEM where item_id not in (select parent_item_id from ITEM ) 查詢效果 無任何匹配值。。。 原因 not in

mysql使用sql語句查詢數據庫所有表註釋已經表字段註釋

code 所有 spa tle var ati lec 復制 大於 場景: 1. 要查詢數據庫 "mammothcode" 下所有表名以及表註釋 /* 查詢數據庫 ‘mammothcode’ 所有表註釋 */ SELECT TABLE_NA

mysql 資料操作 查詢 帶EXISTS關鍵字的查詢

  帶EXISTS關鍵字的子查詢   EXISTS關字鍵字表示存在。   EXISTS 判斷某個sql語句的有沒有查到結果 有就返回真  true 否則返回假 False 如果條件成立 返回另外一條sql語句的返回結果   返回結果了 &nb

mysql 資料操作 查詢 帶比較運算子的查詢

    帶比較運算子的子查詢   #比較運算子:=、!=、>、>=、<、<=、<> #查詢大於所有人平均年齡的員工名與年齡思路 先拿到所有人的平均年齡然後 再用另外一條sql語句 進行比較 拿所有員工的年齡 > 所有人的平均年齡

30種mysql優化sql語句查詢的方法

30種mysql優化sql語句查詢的方法 1.對查詢進行優化,應儘量避免全表掃描,首先應考慮在 where 及 order by 涉及的列上建立索引。   2.應儘量避免在 where 子句中使用!=或<>操作符,否則將引擎放棄使用索引而進行全表掃描。   3.應儘量避

mysql update where查詢實現方式

mysql的update的一些特點 1、更新的表不能在set和where中子查詢; 2、可以對多個表進行更新(sqlserver不行);   如:update ta a,tb b set a.Bid=b.id ,b.Aid=a.id;   3、update 後面可

sql查詢 嵌套SELECT實用語句

exp ring union res pda als 老師 效果 存在 嵌套SELECT語句也叫子查詢,一個 SELECT 語句的查詢結果能夠作為另一個語句的輸入值。子查詢不但能夠出現在Where子句中,也能夠出現在from子句中,作為一個臨時表使用,也能夠出現在selec

zbb20181206 mysql使用sql語句查詢資料庫所有表註釋已經表字段註釋

場景: 1. 要查詢資料庫 "mammothcode" 下所有表名以及表註釋 /* 查詢資料庫 ‘mammothcode’ 所有表註釋 */ SELECT TABLE_NAME,TABLE_COMMENT FROM information_schema.TABLES WHERE table

sql查詢 order by失效問題

一、問題描述  三表聯合查詢  按主表的時間倒敘並分頁   下面sql語句 ORDER BY失效 ,如果把 ORDER BY  放在最後 比如有20條資料 第一頁會是10 -1 第二頁是20-11  分頁不正確   查詢資料發現:在my

對於MySQL中的查詢的理解

每天記錄一下自己的心得體會,今天寫一下MySQL中的子查詢,個人感覺子查詢的難度比之前學的查詢都比較難,可能是語句太多吧,對於初學者的難度會有一點,反正我第一次接觸的時候是崩潰的,因為·程式碼有點多,因為內容比較多,所以小弟要是有講的不到位的,希望各位在下面給出

SQL查詢、相關子查詢

子查詢 子查詢是巢狀在其他查詢中的查詢。子查詢總是從內向外處理。 注意: 1、在使用子查詢時儘量把子查詢分解為多行並且適當進行縮排,能極大的簡化子查詢的使用。 2、不能巢狀太多的子查詢,這樣會降低效能。 3、在WHERE子句中使用子查詢,應該保證SELECT語句具有

MYSQL多表查詢練習

CREATE TABLE emp( ​ empno INT, ​ ename VARCHAR(50), ​ job VARCHAR(50), ​ mgr INT, ​ hiredate DATE, ​ sal DECIMAL(7,2), ​ comm DECIM