2017-02-06 19 views

回答

4

使用case这些数据库:

SELECT (CASE WHEN EXISTS (SELECT 1 FROM posts WHERE topic = 'Sports') 
      THEN 1 ELSE 0 
     END) as retval 

这不会在需要FROM条款(如Oracle和DB2)数据库。

SELECT (CASE WHEN EXISTS (SELECT 1 FROM posts WHERE topic = 'Sports') 
      THEN 1 ELSE 0 
     END) as retval 
FROM dual; 

或者,下面应该在任何数据库工作:

SELECT (CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END) as retval 
FROM posts 
WHERE topic = 'Sports'; 

然而,比效率较低您可以通过创建一个表称为dual,只是让它在数据库修复版本使用EXISTS

+0

谢谢,戈登。我将为第一个解决方案提供支持,因为它支持我所有需要的供应商。 第三种解决方案不适合我,因为我正在重写已使用COUNT的查询。我需要一个EXISTS提供的更快的解决方案。 – FARSiM

相关问题