程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MYSQL聯合查詢中GROUP_CONCAT、MAX、year使用

MYSQL聯合查詢中GROUP_CONCAT、MAX、year使用

編輯:MySQL綜合教程

 

這個是昨天遇到的事了,是寫簡歷搜索器的時候遇到的,查閱了很多的資料,這裡記錄一下一些SELECT聯合查詢中遇到的一些問題並附帶解決辦法

首先上例子:

$sql=""; 

$sql.=" SELECT "; 

$sql.=" ".T_."person_info.personid, "; 

$sql.=" ".T_."person_info.personname, "; 

$sql.=" ".T_."person_info.sex, "; 

$sql.=" year(".T_."person_info.birthday) AS age, "; 

$sql.=" MAX(".T_."person_edu.education) AS xueli, "; 

$sql.=" ".T_."person_edu.school, "; 

$sql.=" GROUP_CONCAT(".T_."person_edu.`subject`), "; 

$sql.=" ".T_."person_info.shi1 "; 

$sql.=" FROM "; 

$sql.=" ".T_."person_info "; 

$sql.=" LEFT JOIN ".T_."person_edu ON ".T_."person_info.personid = ".T_."person_edu.personid "; 

$sql.=" WHERE 1=1 "; 

$sql.=" AND ".T_."person_info.personid = '".$autoid."' "; 

$sql.=" GROUP BY personid ";

 

GROUP_CONCAT()是MySQL數據庫提供的一個函數,通常跟GROUP BY一起用,將所有同personid的subject結果組成結果集,並用逗號分隔開,只支持字符類型的字段,整數型須要特殊寫法,因為沒有研究,所以這裡不說了

MAX是在整數型中取最大值,這裡用於取最高學歷(學歷字典),GROUP BY一起用

year還有month,都是從時間類型中提取一部分,比如年份、月份,我這裡是從生日中提取年份好計算年齡(所謂一年又一年,年齡還是計算來的精確)

另外說一下GROUP BY,就是分組的意思,就是重復記錄只顯示一條,比如說某個人的學歷信息,在數據庫裡面可能很多條,但是顯示在前台的組合搜索結果中,那我就須要合並結果並且只取最高的一條就OK了

本文出自 “金色豬子的PHP成長之路” 博客

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved