sql - 如何在 ANSI SQL 中进行 EXISTS 选择

标签 sql ansi-sql

有没有一种跨数据库(至少是 SQL Server、Oracle、Postgre、MySQL、SQLite)的方法来完成我在 T-SQL 中使用的操作

SELECT 1 WHERE EXISTS (SELECT * FROM Foo WHERE Bar = 'Quux')

这似乎不是有效的 ANSI SQL 语法,因为没有 FROM 子句。目前我正在使用 COUNT(*) 来执行此操作,但我认为这不是最佳选择。

最佳答案

子查询是不必要的 - 使用:

SELECT DISTINCT 
       1 
  FROM Foo 
 WHERE Bar = 'Quux'

更复杂的版本,使用聚合和 CASE 表达式:

SELECT CASE
         WHEN COUNT(*) >= 1 THEN 1 
         ELSE 0
       END
  FROM Foo 
 WHERE Bar = 'Quux'

关于sql - 如何在 ANSI SQL 中进行 EXISTS 选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6088876/

相关文章:

sql - 查询以检查 SQL Server 中的重叠范围?

mysql - SQL - 检查 ID 是否包含相同 ID 的值

sql - 为什么 SQL ANSI-92 标准没有比 ANSI-89 更好地被采用?

mysql - 列的 SQL 约束

utf-8 - 如何使用ASP classic在数据库中读写utf-8字符?

mysql - 100 万条记录的 SQL 查询优化

sql - LINQ-to-SQL 类中的级联删除/更新

sql - 以 parquet 格式保存数据框会生成太多小文件

sql - 使用第三个表作为链接表连接两个表,包括空条目

database - 您如何编写独立于数据库的应用程序?