āĻāĻ¸āĻāĻŋāĻāĻāĻ˛-āĻ, āĻāĻĒāĻ¨āĻŋ "āĻā§" āĻĒā§āĻ¤ā§ āĻāĻžāĻ¨ āĻ¤āĻž āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻāĻ°ā§āĻ¨, "āĻāĻŋāĻāĻžāĻŦā§" āĻāĻ°āĻž āĻāĻāĻŋāĻ¤ āĻ¨āĻ¯āĻŧāĨ¤ āĻ¸ā§āĻ¤āĻ°āĻžāĻ, "āĻ¯ā§āĻŽāĻ¨ āĻļā§āĻ¨āĻž āĻ¯āĻžāĻ¯āĻŧ āĻ¯ā§āĻāĻžāĻŦā§ āĻāĻāĻŋ āĻ˛ā§āĻāĻž āĻšāĻ¯āĻŧ" āĻ¸ā§āĻāĻžāĻāĻ˛ā§ āĻāĻ¸āĻāĻŋāĻāĻāĻ˛ āĻā§āĻ¯āĻŧā§āĻ°āĻŋ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻāĻŋ āĻ¤āĻžāĻ° āĻ¸āĻŽā§āĻŽāĻžāĻ¨ā§āĻ° āĻāĻžāĻ¯āĻŧāĻāĻž āĻ¨ā§āĻ¯āĻŧ
āĻāĻ, āĻ
āĻ¤ā§āĻ¯āĻ¨ā§āĻ¤ āĻ¸āĻšāĻ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§, āĻāĻ¸ā§āĻ¨ āĻāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĻ° āĻĒā§āĻ°āĻ¸āĻā§āĻā§ āĻā§ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻ¤āĻž āĻĻā§āĻāĻž āĻ¯āĻžāĻ GROUP/DISTINCT
и LIMIT
āĻ¤āĻžāĻĻā§āĻ° āĻ¸āĻžāĻĨā§.
āĻ¯āĻĻāĻŋ āĻāĻĒāĻ¨āĻŋ āĻ āĻ¨ā§āĻ°ā§āĻ§ā§ āĻ˛āĻŋāĻā§āĻā§āĻ¨ āĻ¯ā§ "āĻĒā§āĻ°āĻĨāĻŽā§ āĻāĻ āĻā§āĻ¯āĻžāĻŦāĻ˛ā§āĻāĻā§āĻ˛āĻŋāĻā§ āĻ¸āĻāĻ¯ā§āĻā§āĻ¤ āĻāĻ°ā§āĻ¨ āĻāĻŦāĻ āĻ¤āĻžāĻ°āĻĒāĻ°ā§ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¸āĻĻā§āĻļāĻā§āĻ˛āĻŋ āĻĢā§āĻ˛ā§ āĻĻāĻŋāĻ¨, āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻāĻāĻŋ āĻšāĻ¤ā§ āĻšāĻŦā§ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻĻāĻžāĻšāĻ°āĻŖ" - āĻ¸āĻāĻ¯ā§āĻā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻ¨āĻž āĻĨāĻžāĻāĻ˛ā§āĻ āĻāĻāĻŋ āĻ āĻŋāĻ āĻā§āĻāĻžāĻŦā§ āĻāĻžāĻ āĻāĻ°āĻŦā§āĨ¤
āĻāĻŦāĻ āĻāĻāĻ¨āĻ āĻāĻāĻ¨āĻ āĻāĻĒāĻ¨āĻŋ āĻāĻžāĻā§āĻ¯āĻŦāĻžāĻ¨ āĻāĻŦāĻ āĻāĻāĻŋ "āĻļā§āĻ§ā§ āĻāĻžāĻ āĻāĻ°ā§", āĻāĻāĻ¨āĻ āĻāĻāĻ¨āĻ āĻāĻāĻŋ āĻāĻ°ā§āĻŽāĻā§āĻˇāĻŽāĻ¤āĻžāĻ¤ā§ āĻāĻāĻāĻŋ āĻ āĻĒā§āĻ°ā§āĻ¤āĻŋāĻāĻ° āĻĒā§āĻ°āĻāĻžāĻŦ āĻĢā§āĻ˛ā§ āĻāĻŦāĻ āĻāĻāĻ¨āĻ āĻāĻāĻ¨āĻ āĻāĻāĻŋ āĻāĻŽāĻ¨ āĻĒā§āĻ°āĻāĻžāĻŦ āĻĻā§āĻ¯āĻŧ āĻ¯āĻž āĻŦāĻŋāĻāĻžāĻļāĻāĻžāĻ°ā§āĻ° āĻĻā§āĻˇā§āĻāĻŋāĻā§āĻŖ āĻĨā§āĻā§ āĻāĻā§āĻŦāĻžāĻ°ā§ āĻ āĻĒā§āĻ°āĻ¤ā§āĻ¯āĻžāĻļāĻŋāĻ¤āĨ¤
āĻ āĻŋāĻ āĻāĻā§, āĻ¸āĻŽā§āĻāĻŦāĻ¤ āĻ¤ā§āĻŽāĻ¨ āĻĻāĻ°ā§āĻļāĻ¨ā§āĻ¯āĻŧ āĻ¨āĻ¯āĻŧ, āĻ¤āĻŦā§âĻ
"āĻŽāĻŋāĻˇā§āĻāĻŋ āĻĻāĻŽā§āĻĒāĻ¤āĻŋ": āĻ¯ā§āĻ āĻĻāĻŋāĻ¨ + āĻāĻ˛āĻžāĻĻāĻž
SELECT DISTINCT
X.*
FROM
X
JOIN
Y
ON Y.fk = X.pk
WHERE
Y.bool_condition;
āĻ¤āĻžāĻ°āĻž āĻā§ āĻāĻžāĻ¯āĻŧ āĻ¤āĻž āĻā§āĻāĻžāĻŦā§ āĻĒāĻ°āĻŋāĻˇā§āĻāĻžāĻ° āĻšāĻŦā§ āĻāĻ āĻ§āĻ°āĻ¨ā§āĻ° āĻ°ā§āĻāĻ°ā§āĻĄāĻā§āĻ˛āĻŋ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻāĻ¨ āĻāĻ°ā§āĻ¨ X, āĻ¯āĻžāĻ° āĻāĻ¨ā§āĻ¯ Y-āĻ¤ā§ āĻĒā§āĻ°ā§āĻŖ āĻļāĻ°ā§āĻ¤ā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¯ā§āĻā§āĻ¤ āĻāĻā§. āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻāĻāĻāĻŋ āĻ
āĻ¨ā§āĻ°ā§āĻ§ āĻāĻŽāĻž āĻĻā§āĻāĻ¯āĻŧāĻž JOIN
- pk āĻāĻ° āĻāĻŋāĻā§ āĻŽāĻžāĻ¨ āĻŦā§āĻļ āĻāĻ¯āĻŧā§āĻāĻŦāĻžāĻ° āĻĒā§āĻ¯āĻŧā§āĻāĻŋ (āĻ āĻŋāĻ āĻāĻ¤āĻā§āĻ˛āĻŋ āĻāĻĒāĻ¯ā§āĻā§āĻ¤ āĻ°ā§āĻāĻ°ā§āĻĄ Y āĻ¤ā§ āĻĒāĻ°āĻŋāĻŖāĻ¤ āĻšāĻ¯āĻŧā§āĻā§)āĨ¤ āĻāĻŋāĻāĻžāĻŦā§ āĻ
āĻĒāĻ¸āĻžāĻ°āĻŖ? āĻ
āĻŦāĻļā§āĻ¯āĻ DISTINCT
!
āĻāĻāĻŋ āĻŦāĻŋāĻļā§āĻˇāĻ¤ "āĻ¸ā§āĻ¨ā§āĻĻāĻ°" āĻ¯āĻāĻ¨ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻāĻā§āĻ¸-āĻ°ā§āĻāĻ°ā§āĻĄā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ¯āĻŧā§āĻāĻļāĻ¤ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻāĻŋāĻ¤ Y-āĻ°ā§āĻāĻ°ā§āĻĄ āĻĨāĻžāĻā§ āĻāĻŦāĻ āĻ¤āĻžāĻ°āĻĒāĻ°ā§ āĻ¸āĻĻā§āĻļāĻā§āĻ˛āĻŋ āĻŦā§āĻ°āĻ¤ā§āĻŦā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻ°āĻžāĻ¨ā§ āĻšāĻ¯āĻŧ ...
āĻāĻŋāĻāĻžāĻŦā§ āĻ āĻŋāĻ āĻāĻ°āĻŦā§? āĻļā§āĻ°ā§ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻŦā§āĻāĻ¤ā§ āĻšāĻŦā§ āĻ¯ā§ āĻāĻžāĻāĻāĻŋ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§ "āĻāĻā§āĻ¸ā§āĻ° āĻ°ā§āĻāĻ°ā§āĻĄ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻāĻ¨ āĻāĻ°ā§āĻ¨ āĻ¯āĻžāĻ° āĻāĻ¨ā§āĻ¯ Y āĻ¤ā§ āĻ
āĻ¨ā§āĻ¤āĻ¤ āĻāĻāĻāĻŋ āĻĒā§āĻ°ā§āĻŖ āĻļāĻ°ā§āĻ¤ā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¯ā§āĻā§āĻ¤ āĻāĻā§" - āĻ¸āĻ°ā§āĻŦā§āĻĒāĻ°āĻŋ, āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻ¯āĻŧāĻžāĻ-āĻ°ā§āĻāĻ°ā§āĻĄ āĻĨā§āĻā§ āĻāĻŋāĻā§āĻ āĻĻāĻ°āĻāĻžāĻ° āĻ¨ā§āĻāĨ¤
āĻ¨ā§āĻ¸ā§āĻā§āĻĄ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨
SELECT
*
FROM
X
WHERE
EXISTS(
SELECT
NULL
FROM
Y
WHERE
fk = X.pk AND
bool_condition
LIMIT 1
);
PostgreSQL-āĻāĻ° āĻāĻŋāĻā§ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻŦā§āĻāĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻ¯ā§ EXISTS-āĻ āĻĒā§āĻ°āĻĨāĻŽ āĻ°ā§āĻāĻ°ā§āĻĄāĻāĻŋ āĻā§āĻāĻā§ āĻĒāĻžāĻāĻ¯āĻŧāĻž āĻ¯āĻĨā§āĻˇā§āĻ, āĻĒā§āĻ°ā§āĻ¨ā§āĻ°āĻž āĻ¤āĻž āĻāĻ°ā§ āĻ¨āĻžāĨ¤ āĻ
āĻ¤āĻāĻŦ, āĻāĻŽāĻŋ āĻ¸āĻŦāĻ¸āĻŽāĻ¯āĻŧ āĻāĻā§āĻāĻŋāĻ¤ āĻāĻ°āĻ¤ā§ āĻĒāĻāĻ¨ā§āĻĻ āĻāĻ°āĻŋ LIMIT 1
āĻŽāĻ§ā§āĻ¯ā§ EXISTS
.
āĻĒāĻžāĻļā§āĻŦāĻ°ā§ā§āĻ¯āĻŧ āĻ¯ā§āĻāĻĻāĻžāĻ¨
SELECT
X.*
FROM
X
, LATERAL (
SELECT
Y.*
FROM
Y
WHERE
fk = X.pk AND
bool_condition
LIMIT 1
) Y
WHERE
Y IS DISTINCT FROM NULL;
āĻāĻāĻ āĻŦāĻŋāĻāĻ˛ā§āĻĒāĻāĻŋ, āĻ¯āĻĻāĻŋ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻ¯āĻŧ, āĻ āĻŦāĻŋāĻ˛āĻŽā§āĻŦā§ āĻĒāĻžāĻāĻ¯āĻŧāĻž āĻ¸āĻāĻļā§āĻ˛āĻŋāĻˇā§āĻ Y-āĻ°ā§āĻāĻ°ā§āĻĄ āĻĨā§āĻā§ āĻāĻāĻ āĻ¸āĻŽāĻ¯āĻŧā§ āĻāĻŋāĻā§ āĻĄā§āĻāĻž āĻĢā§āĻ°āĻ¤ āĻĻā§āĻāĻ¯āĻŧāĻžāĻ° āĻ āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§āĻ¯āĻŧāĨ¤ āĻ āĻ¨ā§āĻ°ā§āĻĒ āĻŦāĻŋāĻāĻ˛ā§āĻĒ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§ āĻāĻ˛ā§āĻāĻ¨āĻž āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§
"PostgreSQL āĻ ā§āĻ¯āĻžāĻ¨ā§āĻāĻŋāĻĒā§āĻ¯āĻžāĻāĻžāĻ°ā§āĻ¨āĻ¸: āĻŦāĻŋāĻ°āĻ˛ āĻ°ā§āĻāĻ°ā§āĻĄ āĻ¯ā§āĻāĻĻāĻžāĻ¨ā§āĻ° āĻŽāĻžāĻāĻāĻžāĻ¨ā§ āĻĒā§āĻāĻā§ āĻ¯āĻžāĻŦā§" .
"āĻā§āĻ¨ āĻŦā§āĻļāĻŋ āĻ āĻ°ā§āĻĨ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°āĻŦā§āĻ¨": DISTINCT [ON] + LIMIT 1
āĻāĻ āĻ§āĻ°āĻ¨ā§āĻ° āĻā§āĻ¯ā§āĻ¯āĻŧāĻžāĻ°ā§ āĻā§āĻ°āĻžāĻ¨ā§āĻ¸āĻĢāĻ°āĻŽā§āĻļāĻ¨ā§āĻ° āĻāĻāĻāĻŋ āĻ āĻ¤āĻŋāĻ°āĻŋāĻā§āĻ¤ āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻšāĻ˛ āĻ°ā§āĻāĻ°ā§āĻĄā§āĻ° āĻāĻŖāĻ¨āĻž āĻ¸āĻšāĻā§ āĻ¸ā§āĻŽāĻŋāĻ¤ āĻāĻ°āĻžāĻ° āĻā§āĻˇāĻŽāĻ¤āĻž āĻ¯āĻĻāĻŋ āĻ¸ā§āĻā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻŽāĻžāĻ¤ā§āĻ° āĻāĻ/āĻāĻāĻŋ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻ¯āĻŧ, āĻ¯ā§āĻŽāĻ¨ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§:
SELECT DISTINCT ON(X.pk)
*
FROM
X
JOIN
Y
ON Y.fk = X.pk
LIMIT 1;
āĻāĻāĻ¨ āĻāĻŽāĻ°āĻž āĻ āĻ¨ā§āĻ°ā§āĻ§āĻāĻŋ āĻĒāĻĄāĻŧāĻŋ āĻāĻŦāĻ āĻĄāĻŋāĻŦāĻŋāĻāĻŽāĻāĻ¸ āĻā§ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻ¤āĻž āĻŦā§āĻāĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻŋ:
- āĻāĻŽāĻ°āĻž āĻĒā§āĻ˛ā§āĻ āĻ¸āĻāĻ¯ā§āĻ
- X.pk āĻĻā§āĻŦāĻžāĻ°āĻž āĻ āĻ¨āĻ¨ā§āĻ¯
- āĻ āĻŦāĻļāĻŋāĻˇā§āĻ āĻ°ā§āĻāĻ°ā§āĻĄāĻā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻāĻāĻŋ āĻŦā§āĻā§ āĻ¨āĻŋāĻ¨
āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻĒāĻ¨āĻŋ āĻāĻŋ āĻĒā§āĻ¯āĻŧā§āĻā§āĻ¨? "āĻāĻŋāĻā§ āĻāĻāĻāĻž āĻ°ā§āĻāĻ°ā§āĻĄ" āĻ āĻ¨āĻ¨ā§āĻ¯ āĻĨā§āĻā§ - āĻāĻŦāĻ āĻ¯āĻĻāĻŋ āĻāĻŽāĻ°āĻž āĻāĻāĻŋāĻā§ āĻ -āĻ āĻĻā§āĻŦāĻŋāĻ¤ā§āĻ¯āĻŧāĻā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻāĻāĻŋ āĻā§āĻ°āĻšāĻŖ āĻāĻ°āĻŋ, āĻ¤āĻžāĻšāĻ˛ā§ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻāĻŋ āĻā§āĻ¨āĻāĻāĻžāĻŦā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻšāĻŦā§?.. "āĻāĻŦāĻ āĻ¯āĻĻāĻŋ āĻā§āĻ¨āĻ āĻĒāĻžāĻ°ā§āĻĨāĻā§āĻ¯ āĻ¨āĻž āĻĨāĻžāĻā§ āĻ¤āĻŦā§ āĻā§āĻ¨ āĻŦā§āĻļāĻŋ āĻ āĻ°ā§āĻĨ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°āĻŦā§āĻ¨?"
SELECT
*
FROM
(
SELECT
*
FROM
X
-- ŅŅĐ´Đ° ĐŧĐžĐļĐŊĐž ĐŋОдŅŅĐŊŅŅŅ ĐŋОдŅ
ОдŅŅиŅ
ŅŅĐģОвиК
LIMIT 1 -- +1 Limit
) X
JOIN
Y
ON Y.fk = X.pk
LIMIT 1;
āĻāĻŦāĻ āĻ¸āĻā§āĻā§ āĻ āĻŋāĻ āĻāĻāĻ āĻĨāĻŋāĻŽ GROUP BY + LIMIT 1
.
"āĻāĻŽāĻžāĻā§ āĻļā§āĻ§ā§ āĻāĻŋāĻā§āĻāĻžāĻ¸āĻž āĻāĻ°āĻ¤ā§ āĻšāĻŦā§": āĻ āĻ¨ā§āĻ¤āĻ°ā§āĻ¨āĻŋāĻšāĻŋāĻ¤ GROUP + LIMIT
āĻ āĻ¨ā§āĻ°ā§āĻĒ āĻāĻŋāĻ¨āĻŋāĻ¸ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻāĻāĻ¤ā§ āĻ āĻļā§āĻ¨ā§āĻ¯āĻ¤āĻž āĻā§āĻ āĻ āĻ¨ā§āĻ°ā§āĻ§ā§āĻ° āĻ āĻā§āĻ°āĻāĻ¤āĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻžāĻĨā§ āĻ˛ā§āĻŦā§āĻ˛ āĻŦāĻž CTEs:
...
CASE
WHEN (
SELECT
count(*)
FROM
X
LIMIT 1
) = 0 THEN ...
āĻ¸āĻžāĻŽāĻā§āĻ°āĻŋāĻ āĻĢāĻžāĻāĻļāĻ¨ (count/min/max/sum/...
) āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻ¸ā§āĻā§ āĻ¸āĻĢāĻ˛āĻāĻžāĻŦā§ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻŋāĻ¤ āĻšāĻ¯āĻŧ, āĻāĻŽāĻ¨āĻāĻŋ āĻ¸ā§āĻĒāĻˇā§āĻāĻāĻžāĻŦā§ āĻāĻ˛ā§āĻ˛ā§āĻ āĻ¨āĻž āĻāĻ°ā§āĻ GROUP BY
. āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻāĻžāĻ¨ā§ āĻ¸āĻā§āĻā§ LIMIT
āĻ¤āĻžāĻ°āĻž āĻā§āĻŦ āĻŦāĻ¨ā§āĻ§ā§āĻ¤ā§āĻŦāĻĒā§āĻ°ā§āĻŖ āĻ¨āĻ¯āĻŧāĨ¤
āĻŦāĻŋāĻāĻžāĻļāĻāĻžāĻ°ā§ āĻāĻžāĻŦāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ "āĻāĻāĻ¨, āĻ¯āĻĻāĻŋ āĻ¸ā§āĻāĻžāĻ¨ā§ āĻ°ā§āĻāĻ°ā§āĻĄ āĻĨāĻžāĻā§, āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻŽāĻžāĻ° LIMIT āĻāĻ° āĻŦā§āĻļāĻŋ āĻ˛āĻžāĻāĻŦā§ āĻ¨āĻž". āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻĒāĻ¨āĻŋ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻ¨āĻž! āĻāĻžāĻ°āĻŖ āĻāĻŋāĻ¤ā§āĻ¤āĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻŋ āĻšāĻ˛:
- āĻ¤āĻžāĻ°āĻž āĻāĻŋ āĻāĻžāĻ¨ āĻ¤āĻž āĻāĻŖāĻ¨āĻž āĻāĻ°ā§āĻ¨ āĻ¸āĻŦ āĻ°ā§āĻāĻ°ā§āĻĄā§
- āĻ¤āĻžāĻ°āĻž āĻ¯āĻ¤ āĻ˛āĻžāĻāĻ¨ āĻāĻžāĻāĻŦā§ āĻ¤āĻ¤ āĻ˛āĻžāĻāĻ¨ āĻĻāĻŋāĻ¨
āĻ˛āĻā§āĻˇā§āĻ¯ āĻ āĻŦāĻ¸ā§āĻĨāĻžāĻ° āĻāĻĒāĻ° āĻ¨āĻŋāĻ°ā§āĻāĻ° āĻāĻ°ā§, āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻŦāĻŋāĻāĻ˛ā§āĻĒāĻā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻāĻāĻŋ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻāĻĒāĻ¯ā§āĻā§āĻ¤:
(count + LIMIT 1) = 0
āĻāĻĒāĻ°NOT EXISTS(LIMIT 1)
(count + LIMIT 1) > 0
āĻāĻĒāĻ°EXISTS(LIMIT 1)
count >= N
āĻāĻĒāĻ°(SELECT count(*) FROM (... LIMIT N))
"āĻā§āĻ°āĻžāĻŽā§ āĻāĻ¤āĻāĻž āĻā§āĻ˛āĻ¤ā§ āĻšāĻŦā§": DISTINCT + LIMITā§ˇ
SELECT DISTINCT
pk
FROM
X
LIMIT $1
āĻāĻāĻāĻ¨ āĻ¨āĻŋāĻˇā§āĻĒāĻžāĻĒ āĻŦāĻŋāĻāĻžāĻļāĻāĻžāĻ°ā§ āĻāĻ¨ā§āĻ¤āĻ°āĻŋāĻāĻāĻžāĻŦā§ āĻŦāĻŋāĻļā§āĻŦāĻžāĻ¸ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻ¯ā§ āĻāĻāĻāĻŋ āĻ āĻ¨ā§āĻ°ā§āĻ§ā§āĻ° āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻŦāĻ¨ā§āĻ§ āĻšāĻ¯āĻŧā§ āĻ¯āĻžāĻŦā§, āĻ¯āĻ¤ āĻ¤āĻžāĻĄāĻŧāĻžāĻ¤āĻžāĻĄāĻŧāĻŋ āĻāĻŽāĻ°āĻž āĻĒā§āĻ°āĻĨāĻŽ $1 āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻŽāĻžāĻ¨ āĻā§āĻāĻā§ āĻĒāĻžāĻŦ āĻ¯āĻž āĻā§āĻĄāĻŧā§ āĻāĻ¸ā§.
āĻāĻŦāĻŋāĻˇā§āĻ¯āĻ¤ā§ āĻāĻŋāĻā§ āĻ¸āĻŽāĻ¯āĻŧ, āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ¨ā§āĻĄā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ§āĻ¨ā§āĻ¯āĻŦāĻžāĻĻ āĻāĻžāĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻāĻŦāĻ āĻāĻ°āĻŦā§ āĻ¸ā§āĻāĻ āĻ¸ā§āĻāĻŋāĻĒ āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨, āĻ¯āĻžāĻ° āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ā§ āĻāĻžāĻ āĻāĻ°āĻž āĻšāĻā§āĻā§, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻāĻ¨āĻ āĻ¨āĻž.
āĻ āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻĒā§āĻ°āĻĨāĻŽ āĻ¸āĻŦ āĻ°ā§āĻāĻ°ā§āĻĄ āĻĒā§āĻ¨āĻ°ā§āĻĻā§āĻ§āĻžāĻ° āĻāĻ°āĻž āĻšāĻŦā§, āĻ āĻ¨āĻ¨ā§āĻ¯, āĻāĻŦāĻ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ āĻ¨ā§āĻ°ā§āĻ§ āĻāĻ°āĻž āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻ¤āĻžāĻĻā§āĻ° āĻ āĻ¨ā§āĻ āĻĢā§āĻ°āĻ¤ āĻĻā§āĻāĻ¯āĻŧāĻž āĻšāĻŦā§. āĻāĻāĻž āĻŦāĻŋāĻļā§āĻˇ āĻāĻ°ā§ āĻĻā§āĻāĻāĻāĻ¨āĻ āĻ¯āĻĻāĻŋ āĻāĻŽāĻ°āĻž āĻāĻŋāĻā§ āĻāĻžāĻ $ 1 = 4, āĻāĻŦāĻ āĻā§āĻŦāĻŋāĻ˛ā§ āĻāĻ¯āĻŧā§āĻ āĻšāĻžāĻāĻžāĻ° āĻ°ā§āĻāĻ°ā§āĻĄ āĻ°āĻ¯āĻŧā§āĻā§ ...
āĻ¨āĻŋāĻ°āĻ°ā§āĻĨāĻ āĻĻā§: āĻāĻŋāĻ¤ āĻ¨āĻž āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻĒā§āĻ¨āĻ°āĻžāĻŦā§āĻ¤ā§āĻ¤āĻŋāĻŽā§āĻ˛āĻ āĻĒā§āĻ°āĻļā§āĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŦ
āĻāĻ¤ā§āĻ¸: www.habr.com