sql语句优化,急!
SELECT *
FROM c_employee
WHERE emp_dpt_no IN
(SELECT emp_dpt_no
FROM c_employee
WHERE emp_role = 'e') AND emp_comp_no IN
(SELECT emp_comp_no
FROM c_employee
WHERE emp_role = 'e')
如何优化?
谢谢
问题点数:20、回复次数:10Top
1 楼chinacheng07(軒尼詩VSOP)回复于 2005-04-22 11:14:10 得分 0
小猴嗎???
接分Top
2 楼chinacheng07(軒尼詩VSOP)回复于 2005-04-22 11:18:05 得分 5
SELECT *
FROM c_employee
WHERE emp_dpt_no A left join c_employee B on A.emp_dpt_no=B.emp_dpt_no
WHERE emp_role = 'e') AND emp_comp_no IN
(SELECT emp_comp_no
FROM c_employee
WHERE emp_role = 'e')
Top
3 楼chinacheng07(軒尼詩VSOP)回复于 2005-04-22 11:21:15 得分 0
????
怎麼就 c_employee 這一個表啊Top
4 楼apple_8180(十豆三)回复于 2005-04-22 11:22:35 得分 5
如果 emp_dpt_no 及 emp_comp_no 都是字符型
SELECT *
FROM c_employee
WHERE emp_dpt_no+emp_comp_no IN
(SELECT emp_dpt_no+emp_comp_no
FROM c_employee
WHERE emp_role = 'e')Top
5 楼baikaishui_0825(baikaishui)回复于 2005-04-22 11:28:24 得分 0
????
SELECT *
FROM c_employee
WHERE where emprole='e'Top
6 楼paoluo(一天到晚游泳的鱼)回复于 2005-04-22 11:39:32 得分 5
既然是同一个表中,那么emp_dpt_no对应的emp_role = 'e'时,emp_comp_no对应的emp_role也是= 'e',
那么语句实际上就可以简化为
Select * FROM c_employee WHERE emp_role = 'e'
Top
7 楼lingbo_wx(上海小浪人)回复于 2005-04-22 15:34:06 得分 0
才看清楚楼主是同一个表Top
8 楼joss_1983()回复于 2005-04-22 18:32:43 得分 0
重复写有什么用啊!写一个就行了!!!Top
9 楼dreamover(梦醒了〖http://hellfire.cn〗)回复于 2005-04-22 19:20:06 得分 2
SELECT *
FROM c_employee
WHERE emp_role = 'e'Top
10 楼Hopewell_Go(好的在后頭﹗希望更好﹗﹗)回复于 2005-04-22 22:13:20 得分 3
我建議可以把相應的in改成用exists這個在速度相對要快多了Top




