`
wlf
  • 浏览: 3161 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

面试的SQL查询问题,是否有性能更好的查询??

阅读更多
今天面试中有一道数据库的查询问题:
有一公司中的同一员工可以属于多个部门,如何用一条查询列出所有的员工,要求符合的条件是:
员工名字中包含John并且属于两个部门以上,部门中要求包含部门A

我的查询如下:
员工表:create table emp(id int primary key, name varchar(100))
部门表:create table depart(id int primary key, name varchar(10))
关系表:create table emp_depart(eid int,did int)

注释:eid 是员工表emp的外键, did 是部门表depart的外键

select AA.id,AA.name,count(emp_depart.did)
from emp_depart,
(
select e.* from emp e, emp_depart ed,depart d where e.id=ed.eid and ed.did=d.id and e.name like '%John%' and d.name='A'
) AA

where AA.id=emp_depart.eid group by AA.id,AA.name having count(emp_depart.did)>1

测试数据如下:

---------------------------------------------------
insert into emp(id,name) values(1,'john 1')
insert into emp(id,name) values(2,'john 2')
insert into emp(id,name) values(3,'Neil 2')

insert into depart(id,name) values(1,'A')
insert into depart(id,name) values(2,'B')
insert into depart(id,name) values(3,'C')


insert into emp_depart(eid,did) values(1,1)
insert into emp_depart(eid,did) values(1,2)
insert into emp_depart(eid,did) values(2,1)
insert into emp_depart(eid,did) values(3,2)
insert into emp_depart(eid,did) values(3,3)

查询结果:只列出一行数据:1,'john 1'

不知道有没有更好的写法??


1
0
分享到:
评论
2 楼 wlf 2009-01-26  
select emp.id,emp.name,count(epart.id)  from   emp
                inner join emp_depart on  emp.id = emp_depart.eid
                inner join depart on  depart.id = emp_depart.did
              where emp.name like %john%
                    and depart.name  = 'A'
                    group by emp.id,emp.name
                    having count(epart.id)>1

没有测试  看看是否可以....:-)


这个写法不符合要求,如果是以上测试数据,查询结果是空!
因为指定了 depart.name  = 'A'
要求是:属于两个部门以上,部门中要求包含部门A
1 楼 colorfish 2009-01-22  
select emp.id,emp.name,count(epart.id)  from   emp
                inner join emp_depart on  emp.id = emp_depart.eid
                inner join depart on  depart.id = emp_depart.did
              where emp.name like %john%
                    and depart.name  = 'A'
                    group by emp.id,emp.name
                    having count(epart.id)>1

没有测试  看看是否可以....:-)

相关推荐

    sql面试题(sql查询优化)

    - **使用JOIN代替子查询**:在可能的情况下,使用JOIN语句替换子查询,通常能获得更好的性能。 - **合理使用GROUP BY和HAVING**:在进行分组统计时,注意GROUP BY后的列是否已建立索引,同时合理使用HAVING来过滤...

    SQL 面试题目汇总

    它们提高了代码的重用性,可以提升性能,减少网络流量,并提供更好的安全性。理解如何创建、执行和管理存储过程是高级SQL面试中的常见问题。 3. **索引(Indexes)**:索引是数据库管理系统为了快速查找表中的记录...

    SQL 面试问题大全英文版

    根据提供的文件信息,我们可以归纳出一系列重要的SQL知识点及其相关内容。这份资料主要面向已经掌握SQL基础知识的...这些内容不仅有助于读者更好地理解SQL的核心概念,也为准备SQL面试的开发者提供了宝贵的参考材料。

    java sql 数据库 面试 面试试题

    通过深入理解这些概念和技术,你可以更好地准备Java SQL数据库面试,展示你在数据库管理和Java编程方面的专业知识。同时,了解实际项目经验中的问题和解决方案也会大大增加你的面试成功概率。记住,理论知识和实践...

    SQLServer高频面试题及答案

    SQL Server高频面试题及答案 数据库基础知识篇 1. 主键、外键、超键、候选键 超键是关系模式中能唯一标识元组的属性集。...所有问题都回答完毕,希望这些答案能够帮助你更好地理解SQL Server的相关知识点!

    尚硅谷大数据技术之企业SQL面试题_大数据_sql_尚硅谷sql_doc_

    "尚硅谷大数据技术之企业SQL面试题"可能涵盖了这些方面的问题,包括基础语法、性能优化、窗口函数、子查询、连接操作、数据类型、索引以及SQL在特定大数据平台的应用等。学习者可以通过这份文档来检验自己的SQL水平...

    数据库 sql 面试题大全

    在IT行业中,数据库管理和SQL(Structured Query Language)是至关重要的技能,无论是在开发、数据分析还是运维...通过深入学习和实践这些知识点,你将能够更好地应对数据库SQL面试,为自己的职业生涯增添一份竞争力。

    .net 中sql面试题目,面试宝典

    在.NET开发过程中,SQL Server作为常用的数据库管理系统,其在面试中的地位不容忽视。这份压缩包文件,名为"SQL题目",显然包含了...通过深入理解和实践,你可以更好地应对面试挑战,提升在.NET数据库领域的专业素养。

    sqlserver面试他常见问题,一些大型公司的面试题目

    - **版本特性**:SQL Server 2005 相比之前的版本,增加了许多新功能和改进,比如增强的安全性、更强大的查询性能以及更好的管理工具等。 - **查询优化**:SQL Server 2005 提供了更高效的查询优化器,能够自动选择...

    SQL实际应用面试题

    这种方式相比于使用ADO Recordset对象,具有更好的可扩展性和性能优势。 #### 知识点二:创建用于分页的存储过程 **具体实现:** 1. **存储过程spGetNextPage**: - 功能:获取当前ID之后的指定数量记录。 - ...

    经典sql查询整理

    "经典SQL查询整理"这个资源聚焦于SQL面试中的常见问题,旨在帮助用户提升SQL技能,更好地应对工作或学习中的挑战。 首先,SQL的核心功能包括以下几点: 1. **数据查询**:SQL的SELECT语句是其最基础也是最重要的...

    sql面试例子.rar

    在SQL面试中,掌握核心概念和技术是至关...通过深入学习和实践,面试者可以提高自己的SQL技能,更好地应对面试中的各种挑战。记住,理解SQL语句的工作原理、能够优化查询效率以及具备解决实际问题的能力是成功的关键。

    整理SQL面试工作中常用的语句大全

    SQL面试工作中常用的语句大全 在SQL面试中,需要掌握常用的语句和注意事项。本文总结了表的创建、数据插入、查询和修改等方面的知识点。 一、表的创建 ...通过掌握这些知识点,可以更好地应对SQL面试。

    Sql常见面试题

    根据提供的文件内容,我们可以整理并深入探讨以下几个SQL知识点: ### 1. 查询每门课都大于80分的学生姓名 ...以上是根据提供的内容整理的关键SQL知识点及其解析,希望能帮助读者更好地理解和掌握相关的SQL技术。

    SQL测试题目(面试经典)

    在SQL测试题目(面试经典)这个主题中,我们聚焦于SQL语言的核心概念、查询技巧以及在实际面试场景中可能遇到的复杂问题。...通过解题,可以提升对SQL的理解,更好地应对面试挑战,为职业生涯增添亮点。

    sql面试题,JAVA常见面试题120道

    6. **性能优化**:了解SQL性能调优技巧,如EXPLAIN分析,慢查询日志,以及如何使用索引来提升查询效率。 7. **数据库备份与恢复**:理解备份策略,如全备、增量备、差异备份,以及如何进行数据库恢复。 8. **...

    sql语句面试题

    在SQL(Structured Query Language)面试中,面试官通常会询问一系列问题来评估候选人的数据库查询、数据管理和分析能力。以下是一些可能的SQL面试题及其详细...通过解决实际问题和模拟练习,可以更好地准备SQL面试。

    数据库面试题SQL SERSVER

    本文将深入探讨SQL Server相关的面试知识点,帮助求职者们更好地准备数据库面试。 一、SQL Server基础知识 1. SQL Server的版本:SQL Server有多个版本,如Express、Developer、Standard、Enterprise等,它们在功能...

    java私塾面试题----SQL语句2

    12. **优化技巧**:包括使用合适的索引、避免全表扫描、减少数据冗余、合理设计数据库模式等,都是提升SQL性能的关键。 以上只是SQL语句部分基础知识的概述,实际面试中可能还会涉及更深入的问题,如数据库设计原则...

Global site tag (gtag.js) - Google Analytics