我需要从表中进行子查询,以查找在同一城市的同一部门工作的所有员工,但我没有得到它。
我有以下表格:
表部门
DEPARTMENTS
department_id
department_name
location_id
表格位置
LOCATIONS
location_id
street_address
postal_code
city
state_province
country_id
表员工
EMPLOYEES
employee_id
first_name
last_name
email
phone_number
hire_date
job_id
department_id
我现在的代码是这样的:
SELECT
firt_name,
department_id,
job_id
FROM employees
WHERE state_province = (SELECT state_province FROM locations
WHERE state_province = 'Sao Paulo');
问题在于,虽然我想从表state_province
中选择locations
,但我无法从表employees
中选择名称,部门ID和作业ID。如何在进行子查询时选择两个表?
无论如何,对不起,如果我在代码中做错了什么,我不熟悉子查询。
答案 0 :(得分:2)
您可以尝试在两个表之间进行连接:
SELECT
e.firt_name,
e.department_id,
e.job_id,
l.* -- replace with columns you really want
FROM employees e
INNER JOIN locations l
ON e.state_province = l.state_province
WHERE
e.state_province = 'Sao Paulo';
我不知道您要从locations
中选择哪些列,但仅仅state_province
仅为employees
进行加入真的没有意义,因为{{ 1}}表已有此列。所以我只是将location.*
作为占位符包含在内,您可以用实际需要的列替换它。
修改强>
连接是IMO的方法,但是如果你绝对需要使用子查询,那么你可以将当前子查询从WHERE
子句移动到SELECT
子句:
SELECT
firt_name,
department_id,
job_id,
(SELECT l.state_province FROM locations l
WHERE e.state_province = l.state_province) state_province
FROM employees e;
请注意,只有在有一个匹配的省份时才会有效。出于这个原因和性能原因,我的连接查询可能就是您想要在实践中使用的内容。
答案 1 :(得分:1)
我认为在您的情况下,可能没有必要进行子查询。 连接表可以解决问题。
$rg = 'jasonauto'
$resources = Get-AzureRmResource | ?{ $_.ResourceGroupName -eq 'jasonauto' } | select -expandpropert resourcename
foreach($resource in $resources){$ln = 'YouWontDelete' + $resource;
$resourcetype = (Get-AzureRmResource -ResourceGroupName 'jasonauto' -ResourceName $resource ).resourcetype;
New-AzureRmResourceLock -LockLevel CanNotDelete -LockName $ln -resourceName $resource -ResourceType $resourcetype -resourceGroupName $rg -force -verbose}