相关疑难解决方法(0)

SQL查询的执行顺序

我对此查询的执行顺序感到困惑,请解释一下.我很困惑何时应用连接,调用函数,随Case添加新列以及添加序列号时.请解释所有这些的执行顺序.

select Row_number() OVER(ORDER BY (SELECT 1))  AS 'Serial Number', 
    EP.FirstName,Ep.LastName,[dbo].[GetBookingRoleName](ES.UserId,EP.BookingRole) as RoleName,  
    (select top 1 convert(varchar(10),eventDate,103)from [3rdi_EventDates] where EventId=13) as EventDate,
    (CASE [dbo].[GetBookingRoleName](ES.UserId,EP.BookingRole)  
            WHEN    '90 Day Client' THEN 'DC'
            WHEN    'Association Client'  THEN  'DC'
            WHEN    'Autism Whisperer'    THEN  'DC'
            WHEN    'CampII'             THEN   'AD' 
            WHEN    'Captain'              THEN 'AD' 
            WHEN    'Chiropractic Assistant' THEN 'AD'
            WHEN    'Coaches'               THEN 'AD'
            END) as Category from [3rdi_EventParticipants] as EP  
    inner join [3rdi_EventSignup] as ES on EP.SignUpId = ES.SignUpId  
    where EP.EventId = 13
    and userid in …
Run Code Online (Sandbox Code Playgroud)

sql-server

27
推荐指数
4
解决办法
6万
查看次数

INNER JOIN子句忽略NULL值

我希望查询一些与某个类别的患者已被处方的药物有关的数据.但我也想展示没有任何药物的患者.我的查询到目前为止:

    SELECT
    pd.fname,
    pd.lname,
    pp.drug_name,
    pp.drug_strength
FROM
    patient_data pd 
     FULL OUTER JOIN patient_prescr pp on pp.pid = pd.pid 
     FULL OUTER JOIN formulary f on pp.med_id = f.id 
     INNER JOIN formulary_categories fc on f.category = fc.id AND fc.id in (34,36,37,38,5)
WHERE
    pd.lname = 'Test'
Run Code Online (Sandbox Code Playgroud)

当应用INNER JOINto时formulary_categories,我可以正确指定我想要指定药物的类别,但是当我这样做时,它不会包括没有任何药物的患者.

随着INNER JOIN加入formulary_categories表,我的结果是这样的:

-----------------------------------------------------------------------
fname       | lname          | drug_name                | drug_strength
-----------------------------------------------------------------------
Cathy         Test             Clonazepam                 0.5mg
Larry         Test             Librium                    25mg
Jennifer      Test             Vistrail                   25mg
-----------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

如果我将其更改INNER JOIN为a FULL …

sql-server join sql-server-2008

0
推荐指数
1
解决办法
196
查看次数

SQL查询有特定的执行顺序吗?

我对 SQL 查询的执行顺序感到困惑。

例如,(Inner joinMySQL下面的代码中),在WHERE子句和SELECT * FROM子句之间,哪一个首先被解释和执行?

也就是说,下面的查询是否会带来第一个*的(全部)tables data然后找到与条件匹配的案例WHEREdata或者他们只是找到符合条件的匹配列表WHERE,然后SELECT * FROMWHERE结果中找到?

SELECT * FROM customers, orders
WHERE customers.id = orders.customer_id;
Run Code Online (Sandbox Code Playgroud)

如上所述,我想知道 SQL 查询一般是如何执行的。

mysql sql inner-join

0
推荐指数
1
解决办法
659
查看次数

标签 统计

sql-server ×2

inner-join ×1

join ×1

mysql ×1

sql ×1

sql-server-2008 ×1