SQL Server在/或准确性/上下文中
我的_表中有以下列: 客户id、交易日期、店铺名称、交易id 如果我写:SQL Server在/或准确性/上下文中,sql,sql-server,Sql,Sql Server,我的_表中有以下列: 客户id、交易日期、店铺名称、交易id 如果我写: SELECT DISTINCT customer_id, COUNT(DISTINCT transaction_id) as transaction_count FROM my_table WHERE shop_name = 'A' OR shop_name = 'B' AND transaction_date > 'yyyy-mm-dd' AND COUNT(DISTINCT transaction_id) >
SELECT DISTINCT customer_id, COUNT(DISTINCT transaction_id) as transaction_count
FROM my_table
WHERE shop_name = 'A'
OR shop_name = 'B'
AND transaction_date > 'yyyy-mm-dd'
AND COUNT(DISTINCT transaction_id) > 2
SELECT DISTINCT customer_id, COUNT(DISTINCT transaction_id) as transaction_count
FROM my_table
WHERE shop_name IN ('A','B')
AND transaction_date > 'yyyy-mm-dd'
AND COUNT(DISTINCT transaction_id) > 2
我有100张唱片
如果我写:
SELECT DISTINCT customer_id, COUNT(DISTINCT transaction_id) as transaction_count
FROM my_table
WHERE shop_name = 'A'
OR shop_name = 'B'
AND transaction_date > 'yyyy-mm-dd'
AND COUNT(DISTINCT transaction_id) > 2
SELECT DISTINCT customer_id, COUNT(DISTINCT transaction_id) as transaction_count
FROM my_table
WHERE shop_name IN ('A','B')
AND transaction_date > 'yyyy-mm-dd'
AND COUNT(DISTINCT transaction_id) > 2
我有50张唱片
为什么在这种情况下记录会有所不同?IN(商店名称)是否比IN(商店名称)更准确
谢谢。如果您需要与运算符中的
或条件
相同的结果,则需要将或条件
放在括号内-
SELECT DISTINCT customer_id, COUNT(DISTINCT transaction_id) as transaction_count
FROM my_table
WHERE (shop_name = 'A'
OR shop_name = 'B')
AND transaction_date > 'yyyy-mm-dd'
AND COUNT(DISTINCT transaction_id) > 2
询问
SELECT DISTINCT customer_id, COUNT(DISTINCT transaction_id) as transaction_count
FROM my_table
WHERE shop_name = 'A'
OR shop_name = 'B'
AND transaction_date > 'yyyy-mm-dd'
AND COUNT(DISTINCT transaction_id) > 2
相当于:
SELECT DISTINCT customer_id, COUNT(DISTINCT transaction_id) as transaction_count
FROM my_table
WHERE shop_name = 'A'
OR (shop_name = 'B'
AND transaction_date > 'yyyy-mm-dd'
AND COUNT(DISTINCT transaction_id) > 2)
这里附加的条件只影响shop_name='B'查询缺少
GROUP BY
子句,或者它不是MS SQL Server(最终会出错)。谢谢@Fahmi,但是当我不添加括号时,它在做什么,结果似乎还是准确的?@nleiserowitz,应该是相同的结果-会有所不同。幸运的是,在这种情况下,您得到的是-但并非所有情况下都是一样的。