Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server在/或准确性/上下文中_Sql_Sql Server - Fatal编程技术网

SQL Server在/或准确性/上下文中

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) >

我的_表中有以下列:

客户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) > 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,应该是相同的结果-会有所不同。幸运的是,在这种情况下,您得到的是-但并非所有情况下都是一样的。