隨筆-7  評論-24  文章-102  trackbacks-0

          引用: 標(biāo)量子查詢

          一個標(biāo)量子查詢是一個放在圓括弧里的普通 SELECT查詢, 它只返回只有一個字段的一行.(參閱 Chapter 4 獲取有關(guān)寫查詢的信息。) 該 SELECT 將被執(zhí)行, 而其單個返回值將在周圍的值表達(dá)式中使用. 把一個返回超過一行或者超過一列的查詢用做標(biāo)量查詢是錯誤的. (不過,在特定的執(zhí)行中,子查詢不返回行則不算錯誤;標(biāo)量結(jié)果認(rèn)為是 NULL.)該子查詢可以引用周圍查詢的變量, 那些變量也是在計算任意子查詢的時候當(dāng)做常量使用的. 又見 Section 6.15.

          比如,下面的查詢找出每個州中的最大人口數(shù)量的城市∶

          SELECT name, (SELECT max(pop) FROM cities WHERE cities.state = states.name)
          FROM states;



          子查詢作為標(biāo)量操作數(shù)--MySql數(shù)據(jù)庫
          ps: 這種方法的只能查詢單一值

          《Oracle 高效設(shè)計》 讀書思考--標(biāo)量子查詢查詢性能討論
          能提供不少思路


          select     n.ex_name,     c.customer_name,     n.remark,          e.employee_name as create_name,     n.create_user,         n.project_id,   n.id as node_id,         n.model_id,     n.file_id,             g.grade_name as level_name,     t.type as type_name,     
                   exe.exe_ids,  exe.exe_names,    dept.dept_ids,         dept.dept_names,      
              
          Convert(DATE_FORMAT(pn.node_end_time, '%Y年%c月%e日') USING utf8) as end_time     
          from     hrp_project_execution n 
          left join hrp_cycle_grade g on g.id = n.worklevel     
          left join hrp_work_type t on t.id = n.worktype     
          left join hrp_customer c on c.id = n.customer_id     
          left join hrp_company_employee_info e on e.id = n.create_user     
          left join hrp_project_node pn on pn.id = n.node_id
          left join (select ne.execution_id, Convert(GROUP_CONCAT(ne.executor_id) USING utf8) as exe_ids,      GROUP_CONCAT(e.employee_name) as exe_names  
                 
          from  hrp_project_execution_executor ne     
                 
          inner join hrp_company_employee_info e on e.id = ne.executor_id     
                 
          where ne.delete_flag = 0       and    ne.execution_id = 46  group by ne.execution_id 
                 ) exe 
          on exe.execution_id = n.id
          left join (select de.exectuion_id, Convert(GROUP_CONCAT(de.deptor_id) USING utf8) as dept_ids,          GROUP_CONCAT(e.employee_name) as dept_names  
                 
          from  hrp_project_execution_deptor de     
                 
          inner join hrp_company_employee_info e on e.id = de.deptor_id     
                 
          where de.delete_flag = 0       and    de.exectuion_id = 46  group by de.exectuion_id
                 ) dept 
          on dept.exectuion_id = n.id
          where    n.id = 46
          ps. 自己寫的部分, 東西鑲嵌在 left join 部分
          posted on 2009-07-15 12:47 黃小二 閱讀(1916) 評論(0)  編輯  收藏 所屬分類: [DB].Oracle[DB].MySQL[DB].SQL Server
          主站蜘蛛池模板: 桃江县| 建始县| 建阳市| 察哈| 玉门市| 宣化县| 霍州市| 大悟县| 神农架林区| 兴和县| 蓬溪县| 房产| 昭苏县| 江城| 温泉县| 额敏县| 西吉县| 二手房| 淮北市| 普陀区| 清河县| 罗源县| 如东县| 刚察县| 仲巴县| 冕宁县| 太康县| 金乡县| 石首市| 西盟| 新营市| 延津县| 运城市| 海口市| 肃北| 云和县| 安岳县| 任丘市| 孟津县| 琼海市| 福泉市|