使用Join优化SQL查询

使用Join优化SQL查询,sql,sql-server,join,left-join,inner-join,Sql,Sql Server,Join,Left Join,Inner Join,我使用了两个变量,每个变量都有一个SELECT语句 我被告知我可以通过使用JOIN只执行一次查询来优化我的查询 我设法把这句话合为一句。但是它没有使用JOIN,在我当前的查询中仍然有2个SELECT语句 当前查询: BEGIN DECLARE @EntityId int, @Country nvarchar(10), @OrganizationId int, @Username nvarchar(100) = 'user1' Set @OrganizationId = (SELECT BU

我使用了两个变量,每个变量都有一个
SELECT
语句

我被告知我可以通过使用
JOIN
只执行一次查询来优化我的查询

我设法把这句话合为一句。但是它没有使用
JOIN
,在我当前的查询中仍然有2个
SELECT
语句

当前查询:

BEGIN

DECLARE @EntityId int, @Country nvarchar(10), @OrganizationId int, 
@Username nvarchar(100) = 'user1'

Set @OrganizationId = (SELECT BU.OrganizationId 
FROM [Company].[Config].[BusinessUnit] BU 
WHERE BU.EntityId = (SELECT BU.EntityId
FROM [Company].[PES].[EmployeeProfile] EP
LEFT JOIN   Config.BusinessUnit bu on EP.EntityCode = BU.EntityCode
WHERE EP.Username = @Username))

IF(@OrganizationId = 3)
    SET @Country = 'MS'
ELSE
    SET @Country = 'SG'
SELECT @Country

END
我当前的查询是否可以继续,或者是否可以进一步改进?多谢各位


上次查询:


为什么不把它合并成一个查询呢

SELECT @Country = (CASE WHEN @OrganizationId = 3 THEN 'MS'
                        ELSE 'SG'
                   END)
FROM [Company].[PES].[EmployeeProfile] EP JOIN
     Config.BusinessUnit cbu 
     ON EP.EntityCode = cbu.EntityCode JOIN
     [Company].[PES].[BusinessUnit] BU 
     ON cbu.EntityId = bu.EntityId
WHERE EP.Username = @Username)

为什么不把它合并成一个查询呢

SELECT @Country = (CASE WHEN @OrganizationId = 3 THEN 'MS'
                        ELSE 'SG'
                   END)
FROM [Company].[PES].[EmployeeProfile] EP JOIN
     Config.BusinessUnit cbu 
     ON EP.EntityCode = cbu.EntityCode JOIN
     [Company].[PES].[BusinessUnit] BU 
     ON cbu.EntityId = bu.EntityId
WHERE EP.Username = @Username)

你能解释一下逻辑应该做什么吗?样本数据和期望的结果有帮助。另外,您的代码看起来像SQL Server,而不是MySQL。这会影响优化。你能解释一下逻辑应该做什么吗?样本数据和期望的结果有帮助。另外,您的代码看起来像SQL Server,而不是MySQL。这会影响优化。