首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >优化SQL Server查询

优化SQL Server查询
EN

Stack Overflow用户
提问于 2012-06-27 14:50:23
回答 2查看 101关注 0票数 0

我有一个SQL Server查询:

代码语言:javascript
复制
(
    SELECT k12_dms_contacts_institution_jobtitles.job_title_id AS id
    FROM   k12_dms_contacts_institution_jobtitles
            INNER JOIN k12_dms_institution_master  ON  k12_dms_institution_master.id = k12_dms_contacts_institution_jobtitles.inst_id
    WHERE   (
                k12_dms_institution_master.state_id='63'
                AND k12_dms_contacts_institution_jobtitles.glevel_id='1'
            )
    GROUP BY
             k12_dms_contacts_institution_jobtitles.job_title_id
) 
INTERSECT 
(
    SELECT k12_dms_contacts_institution_jobtitles.job_title_id AS id
    FROM   k12_dms_contacts_institution_jobtitles
            INNER JOIN k12_dms_institution_master  ON  k12_dms_institution_master.id = k12_dms_contacts_institution_jobtitles.inst_id
    WHERE   (
                k12_dms_institution_master.state_id='63'
                AND k12_dms_contacts_institution_jobtitles.glevel_id='2'
            )
    GROUP BY
             k12_dms_contacts_institution_jobtitles.job_title_id
) 
INTERSECT 
(
    SELECT k12_dms_contacts_institution_jobtitles.job_title_id AS id
    FROM   k12_dms_contacts_institution_jobtitles
            INNER JOIN k12_dms_institution_master  ON  k12_dms_institution_master.id = k12_dms_contacts_institution_jobtitles.inst_id
    WHERE   (
                k12_dms_institution_master.state_id='63'
                AND k12_dms_contacts_institution_jobtitles.glevel_id='3'
            )
    GROUP BY
             k12_dms_contacts_institution_jobtitles.job_title_id
) 
INTERSECT 
(
    SELECT k12_dms_contacts_institution_jobtitles.job_title_id AS id
    FROM   k12_dms_contacts_institution_jobtitles
            INNER JOIN k12_dms_institution_master  ON  k12_dms_institution_master.id = k12_dms_contacts_institution_jobtitles.inst_id
    WHERE   (
                k12_dms_institution_master.state_id='63'
                AND k12_dms_contacts_institution_jobtitles.glevel_id='4'
            )
    GROUP BY
             k12_dms_contacts_institution_jobtitles.job_title_id
) 

有没有办法优化上面的query.Intersection只需要在Where子句的基础上。我想获取所有的职位,这是所有级别的共同。

EN

回答 2

Stack Overflow用户

发布于 2012-06-27 14:56:04

您可以使查询更简洁,如下所示:

代码语言:javascript
复制
SELECT IJT.job_title_id AS id
FROM k12_dms_contacts_institution_jobtitles AS IJT
INNER JOIN k12_dms_institution_master AS IM
ON IM.id = IJT.inst_id
WHERE IM.state_id='63'
AND IJT.glevel_id IN ('1', '2', '3', '4')
GROUP BY IJT.job_title_id
HAVING COUNT(DISTINCT IJT.glevel_id) = 4
票数 1
EN

Stack Overflow用户

发布于 2012-06-27 15:00:12

这就是你要找的东西吗?(未测试)

代码语言:javascript
复制
 SELECT k12_dms_contacts_institution_jobtitles.job_title_id AS id
    FROM   k12_dms_contacts_institution_jobtitles
            INNER JOIN k12_dms_institution_master  ON  k12_dms_institution_master.id = k12_dms_contacts_institution_jobtitles.inst_id
    WHERE   (
                k12_dms_institution_master.state_id='63'
                AND (select count( disctinct k12_dms_contacts_institution_jobtitles.glevel_id) from k12_dms_contacts_institution_jobtitles where k12_dms_contacts_institution_jobtitles.glevel_id in ('1','2','3','4')) = 4
            )
    GROUP BY
             k12_dms_contacts_institution_jobtitles.job_title_id
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11220814

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档