FAR*_*SiM 1 mysql sql sql-server postgresql
以下查询适用于 PostgreSQL 和 MS SQL,但不适用于 MYSQL
SELECT 1 as retVal WHERE EXISTS (SELECT 1 FROM posts WHERE topic = 'Sports')
Run Code Online (Sandbox Code Playgroud)
以下查询适用于 PostgreSQL 和 MySQL,但不适用于 MS SQL
SELECT EXISTS (SELECT 1 FROM posts WHERE topic = 'Sports')
Run Code Online (Sandbox Code Playgroud)
需要一个适用于所有三个供应商的查询。
用于case这些数据库:
SELECT (CASE WHEN EXISTS (SELECT 1 FROM posts WHERE topic = 'Sports')
THEN 1 ELSE 0
END) as retval
Run Code Online (Sandbox Code Playgroud)
FROM这在需要子句的数据库(例如 Oracle 和 DB2)中不起作用。您可以通过创建一个名为的表dual并将其放在数据库中来解决这个问题:
SELECT (CASE WHEN EXISTS (SELECT 1 FROM posts WHERE topic = 'Sports')
THEN 1 ELSE 0
END) as retval
FROM dual;
Run Code Online (Sandbox Code Playgroud)
或者,以下内容应该适用于任何数据库:
SELECT (CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END) as retval
FROM posts
WHERE topic = 'Sports';
Run Code Online (Sandbox Code Playgroud)
但是,它的效率低于使用EXISTS.
| 归档时间: |
|
| 查看次数: |
315 次 |
| 最近记录: |