i tried below queries , bit confused working of exists
clause, although know evaluates true/false
.
below #1 sql sub-query anyhow returns 0, still result of combined query 1.
1. select 1 exists ( select 0 1 = 1 ) 2. select 1 exists ( select 0 1 = 0 )
also, if exists
clause evaluates true/false
, why below 1 not work?
select 1 exists ( 1 )
please me understand situation.
edit: exists
clause evaluates true/false
. condition true
if sub-query returns result. why exists ( 1 )
not work ? true
condition.
from documentation exists:
specifies subquery test existence of rows.
select 1 exists ( select 0 1 = 1 ) -- there row select 1 exists ( select 0 1 = 0 ) -- no row returned subquery select 1 exists ( 1 ) -- not valid query `1` not subquery
keep in mind checks rows not values so:
select 1 exists ( select null 1 = 1 ) -- return 1
edit:
this seems contradictory sentence " exists clause evaluates true/false" ?
exists
operator tests existence of rows , returns true/false
.
so if subquery returns:
╔══════════╗ ╔══════════╗ ╔══════════╗ ╔══════════╗ ║ subquery ║ ║ subquery ║ ║ subquery ║ ║ subquery ║ ╠══════════╣ ╠══════════╣ ╠══════════╣ ╠══════════╣ ║ null ║ ║ 1 ║ ║ 0 ║ ║anything ║ ╚══════════╝ ╚══════════╝ ╚══════════╝ ╚══════════╝
then exists (subquery)
-> true
.
if subquery returns (no rows):
╔══════════╗ ║ subquery ║ ╚══════════╝
then exists (subquery)
-> false
.
Comments
Post a Comment