我在SQL Server中使用两个查询,我想合并并创建一个查询。尝试了几种选择,但没有成功。
查询1
select emp_id, name, age
from employee
where age > 50
查询2
select dept_id, dept_name
from department
where emp_id = 'COMPANY.ID' + emp_id
合并两个查询的问题是,尽管查询1可以返回多行,但是我无法使用子查询直接使用查询2中查询1的emp_id
,因为查询中的emp_id
2的前缀为“ COMPANY.ID。” + emp_id。有什么建议吗?
COMPANY.ID
是一个常量,在将其保存到部门表之前会被前缀为emp_id
。
示例员工表
emp_id name age
-----------------------------
123 John 45
345 Susan 34
789 Pat 66
部门表示例
emp_id dept_id dept_name
-----------------------------------------------------------------------
COMPANY.ID.123 123 Accounting
COMPANY.ID.345 123 Accounting
希望这些示例有助于理解我的数据集
答案 0 :(得分:0)
这是你想要的吗
查询2是完全错误的,将永远不会匹配,而是使用%CompanyId%
select distinct dept_id, dept_name
from
department where empid IN (
select emp_id from
employee where age > 50 and empid
like '%CompanyId%' )
答案 1 :(得分:0)
我了解到您正在尝试撤出至少一名员工年龄超过50岁的部门。
一种解决方案是将EXISTS
条件与相关子查询一起使用:
SELECT dept_id, dept_name
FROM department d
WHERE EXISTS (
SELECT 1
FROM employee e
WHERE
CONCAT('COMPANY.ID.', e.emp_id) = d.emp_id
AND e.age > 50
)
答案 2 :(得分:0)
您可以使用join合并两个表
SELECT d.dept_id, d.dept_name
FROM department d
INNER JOIN employee e
ON CONCAT('COMPANY.ID.', e.emp_id) = d.emp_id
WHERE e.age > 50