我有下表,其中包含两个字段,即a和b,如下所示:
create table employe
(
empID varchar(10),
department varchar(10)
);
插入一些记录:
insert into employe values('A101','Z'),('A101','X'),('A101','Y'),('A102','Z'),('A102','X'),
('A103','Z'),('A103','Y'),('A104','X'),('A104','Y'),('A105','Z'),('A106','X');
select * from employe;
empID department
------------------
A101 Z
A101 X
A101 Y
A102 Z
A102 X
A103 Z
A103 Y
A104 X
A104 Y
A105 Z
A106 X
注意
:现在我要向员工显示唯一且仅属于部门Z
和部门的员工Y
。因此,根据条件,只A103
应显示雇员,因为他仅属于部门Z
和部门Y
。但是员工A101
不应因为属于而出现Z,X, and Y
。
预期结果 :
如果条件为:Z
,Y
则结果应为:
empID
------
A103
如果条件为:Z
,X
则结果应为:
empID
------
A102
如果条件是:Z
,X
并且Y
随后的结果应该是:
empID
------
A101
注意 :我只想在where
子句中执行此操作(不想使用group by
andhaving
子句),因为我where
还将在另一个子句中包含该子句。
第一个解决方案
sqlfiddle
SELECT empId
FROM (
SELECT
empID, cc = COUNT(DISTINCT department)
FROM employe
WHERE department IN('Y', 'Z')
GROUP BY empID
)t
WHERE
t.cc = 2
AND t.cc = (
SELECT COUNT(*)
FROM employe
WHERE empID = t.empID
)
第二解决方案
sqlfiddle
SELECT e.empId
FROM employe e
WHERE e.department IN('Y', 'Z')
GROUP BY e.empID
HAVING
COUNT(e.department) = 2
AND COUNT(e.department) = (SELECT COUNT(*) FROM employe WHERE empID = e.empId)
不使用GROUP BY
和HAVING
:
SELECT DISTINCT e.empID
FROM employe e
WHERE
EXISTS(
SELECT 1 FROM employe WHERE department = 'Z' AND empID = e.empID
)
AND EXISTS(
SELECT 1 FROM employe WHERE department = 'Y' AND empID = e.empID
)
AND NOT EXISTS(
SELECT 1 FROM employe WHERE department NOT IN('Y', 'Z') AND empID = e.empID
)
问题内容: 我只想选择特定的列(例如)。我有一个通用的DAO,我想到的是: 错误是: 。我应该如何改变呢?我想获取一个类型对象,该对象仅具有和字段,而其他所有对象都是。 类型扩展有两个字段。 是。 问题答案: 仅获取特定列的JPA方法之一是请求一个Tuple对象。 在您的情况下,您需要编写如下内容: 如果您有一个代表结果的类(例如您的情况),则可以采用另一种方法。不必是Entity类。如果具有类似
问题内容: 我正在寻找一种选择SQL服务器上所有数据库的方法,这些数据库仅包含表“ dbo.mytable” 我怎样才能做到这一点 ? 我已经有了这两个sql查询: 和 第一个查询列出我的sql服务器上的所有数据库,第二个查询检查dbo.mytable是否存在。我想将它们合并。 谢谢 问题答案: 一种将它们全部归还到一个结果集中的简洁方法是
你们能帮我解决这个问题吗?我想修改它,以便它只显示来自此查询(78%)的至少3名员工的部门,而不是来自(原始的员工/部门表)。每次我尝试“having COUNT(department_ID)或@the WHERE子句”都会给我一个错误。我需要做第二次连接吗?谢谢。 EMPLOYEE_ID EMPLOYEE_NAME工资DEPARTMENT_ID DEPT_NAME MAX_SAL 选定6行
我想将JTable中的行选择限制为仅2行。如果用户尝试选择第三行(Ctrl单击),则应通过编程方式取消选择表中最早的选择。为了实现这一点,我在表中添加了一个ListSelectionListener。在下面的示例中,似乎不起作用。 如果有更简单或更优雅的方法来达到同样的效果,请给出建议。
问题内容: 在XML文档中,我具有共享相同名称的元素,但是属性的值定义了它是什么类型的数据,并且我想从文档中选择所有具有特定值的元素。我是否需要使用XPath(如果可以,您是否可以建议正确的语法)还是有更优雅的解决方案? 这是一些示例XML: 我想选择类型为的所有子代标签的内容。 PS-我正在尝试使用PHP与Netflix API进行接口-这对我的问题无关紧要,但是如果您想提出一种更好的方法,我非
在使用带有Spring Boot JPA的Hibernate时,我注意到,当试图在扩展Spring的CrudRepository接口的存储库工件中实现更新方法时,必须将要更新的整个实体对象传递给这样的更新方法。只是直觉上,这似乎很浪费,我想知道什么是获得Spring Data/JPA的干净方法,即假设只有那些传入的值需要更新,而不对那些未传入的值进行修改。 这是当前的服务方法,