标签:
mysql多表查询
前提如下:
person表:----------------------------------id name dept_id salary0001 wangda 101 15000002 wanger 103 30000003 wangsan 108 40000004 wangsi 109 20000005 wangwu 101 60000006 wangliu 102 70000007 wangqi [NULL] 4000----------------------------------dept表:----------------------------------dept_id dept_name101 caiwu102 zhenggong103 wuzi108 shangwu109 renshi110[NULL]----------------------------------salary_grade表:----------------------------------salary_grade lowest_sal highest_salA 0 999B 1000 1999C 2000 2999D 3000 4999E 5000 6999F 7000 9999----------------------------------SELECT p.name, p.dept_id, d.dept_nameFROM person p, dept dWHERE p.dept_id = d.dept_id;name dept_id dept_namewangda 101 caiwuwangwu 101 caiwuwangliu 102 zhenggongwanger 103 wuziwangsan 108 shangwuwangsi 109 renshiSELECT p.`name`, p.dept_id, d.dept_name, p.salary, s.salary_gradeFROM person p, dept d, salary_grade sWHERE p.dept_id = d.dept_idAND p.salary BETWEEN s.lowest_salAND s.highest_sal;name dept_id dept_name salary salary_gradewangda 101 caiwu 1500 Bwangsi 109 renshi 2000 Cwanger 103 wuzi 3000 Dwangsan 108 shangwu 4000 Dwangwu 101 caiwu 6000 Ewangliu 102 zhenggong 7000 FSELECT p. NAME, d.dept_nameFROM person pLEFT JOIN dept d ON p.dept_id = d.dept_id;NAME dept_namewanger wuziwangsan shangwuwangsi renshiwangwu caiwuwangliu zhenggongwangqi [NULL]SELECT p. NAME, d.dept_nameFROM person pRIGHT JOIN dept d ON p.dept_id = d.dept_id;NAME dept_id dept_namewangda 101 caiwuwangwu 101 caiwuwangliu 102 zhenggongwanger 103 wuziwangsan 108 shangwuwangsi 109 renshi[NULL]110[NULL]SELECT*FROM person pLEFT JOIN dept d ON p.dept_id = d.dept_idUNION SELECT* FROM person p RIGHT JOIN dept d ON p.dept_id = d.dept_id;id name dept_id salary dept_id1 dept_name0001 wangda 101 1500 101 caiwu0002 wanger 103 3000 103 wuzi0003 wangsan 108 4000 108 shangwu0004 wangsi 109 2000 109 renshi0005 wangwu 101 6000 101 caiwu0006 wangliu 102 7000 102 zhenggong0007 wangqi [NULL]4000[NULL][NULL][NULL][NULL][NULL][NULL]110[NULL]SELECT*FROM personNATURAL JOIN dept;dept_id id name salary dept_name1010001 wangda 1500 caiwu1010005 wangwu 6000 caiwu1020006 wangliu 7000 zhenggong1030002 wanger 3000 wuzi1080003 wangsan 4000 shangwu1090004 wangsi 2000 renshiSELECT*FROM personJOIN dept USING (dept_id);dept_id id name salary dept_name1010001 wangda 1500 caiwu1010005 wangwu 6000 caiwu1020006 wangliu 7000 zhenggong1030002 wanger 3000 wuzi1080003 wangsan 4000 shangwu1090004 wangsi 2000 renshiid name dept_id salary manager_id0001 wangda 101 1500 00050002 wanger 103 3000 00060003 wangsan 108 4000 00050004 wangsi 109 2000 00060005 wangwu 101 6000 00070006 wangliu 102 7000 00070007 wangqi [NULL]9000[NULL]SELECT e.id employee_id, e. NAME employee, m.id manager_id, m.`name` managerFROM person e, person mWHERE e.manager_id = m.idAND lower(e. NAME)=‘wangsi‘;employee_id employee manager_id manager0004 wangsi 0006 wangliu标签:
原文地址:http://www.cnblogs.com/rainyeagle/p/4599453.html