Как сопоставить записи, где значение равно нулю или один и больше - PullRequest
0 голосов
/ 10 октября 2019

У меня есть таблица MySQL с INT столбцом c, значение которого равно 0 или больше.

Мой оператор SELECT содержит переменную $x для запроса к таблице, которая являетсялибо 1, либо 0. Я хочу иметь возможность сопоставлять записи, где c = 0, если $x равно 0, или c> = 1, если $x равно 1.

Вот как яВ настоящее время я делаю это в Perl:

my $x; # 1 or 0
my $c_statement;
if ($x==0){$c_statement = 'c = 0'}else{$c_statement = 'c >= 1'};
my $sth = "SELECT * FROM table WHERE $c_statement";

Есть ли более удобный способ сделать это без необходимости предварительно оценивать $x или с использованием предложений IF в операторе WHERE?

1 Ответ

1 голос
/ 10 октября 2019

Just:

SELECT * 
FROM mytable 
WHERE 
    (:x = 0 AND c = 0)
    OR (:x = 1 AND c >= 1)

Скобки излишни (поскольку OR имеет более низкий приоритет, чем AND), но я считаю, что они делают логику условий более понятной.

...