首页 > 解决方案 > 如何匹配值为零或一或更大的记录

问题描述

我有一个 MySQL 表,其INTc的值为 0 或更大。

我的SELECT语句包含一个$x用于查询 1 或 0 表的变量。我希望能够匹配c= 0 if$x为 0 或c>= 1 if$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

标签: mysqlselectwhere-clause

解决方案


只是:

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

括号是多余的(因为OR优先级低于AND),但我发现它们使条件的逻辑更清晰。


推荐阅读