count()中的比较运算符不起作用

SELECT 15 > 14 FROM Duel;

此代码段在MySql中起作用,但在SQL Server中不起作用:

  

SQL错误(102):“>”附近的语法不正确

我有一个要求,我要查看是否至少有1条记录返回1或0

SELECT count(emp.name) > 0
FROM ****
WHERE *** IN (***)

检查数据库提琴https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=348709a562ad02cbe88abf01a37229f1

marimount 回答:count()中的比较运算符不起作用

我认为您正在寻找having

 SELECT 1 from new_table_name
   having count(empName)>0

更新

您可以使用SIGN()。结果为肯定值时返回1,结果为0时返回0

SELECT SIGN(COUNT(*)) FROM new_table_name

Check fiddle here

,

尝试case语句-

select case when count(emp.name) > 0 then 1 else 0 end
from ****
where *** IN (***)
,

您可以尝试EXISTS子句

IF EXISTS (SELECT 1 emp.name
        FROM ****
        WHERE *** IN (***))
BEGIN
    SELECT 1
END
ELSE
    SELECT 0
END 

由于要返回1或0,因此需要在CASE语句中定义值。

select case when exists(SELECT emp.name
            FROM ****
            WHERE *** IN (***)) then 1 else 0 end
,

不要使用COUNT。您不想计数行,只是想看看是否有一行。而且不要使用IF这样的逻辑,只需使用CASE。

SELECT CASE WHEN EXISTS (SELECT 1 FROM **** WHERE **** IN (****)) 
            THEN 1
            ELSE 0
       END;
,

您可能要使用这样的CTE:

WITH T (C)
AS  
-- Select the first record with a value in emp.name
(  
    SELECT TOP 1 1
    FROM **** emp
    WHERE *** IN (***)
    AND emp.name IS NOT NULL
)
-- just count the elements of T
SELECT COUNT(1) FROM T

https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=3514827fadaf6b8d19c2658008df0a99


如果您更喜欢单行解决方案而不必对所有记录进行计数,则可以选择以下方法:

SELECT IIF(exists(select TOP 1 1 from **** emp where emp.name IS NOT NULL),1,0)

https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=be6c753a6ddb164524576061c3b8802e

,

提供的所有答案都可以正常工作。但是SQL Server已经提供了比较功能。

SELECT IIF(count(erm.employee_code) > 0,0) 
FROM **** 
WHERE *** IN (***)
本文链接:https://www.f2er.com/3105474.html

大家都在问