mysql - 如何匹配值为零或一或更大的记录
问题描述
我有一个 MySQL 表,其INT
列c
的值为 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
?
解决方案
只是:
SELECT *
FROM mytable
WHERE
(:x = 0 AND c = 0)
OR (:x = 1 AND c >= 1)
括号是多余的(因为OR
优先级低于AND
),但我发现它们使条件的逻辑更清晰。
推荐阅读
- java - 每当我注销时应用程序崩溃,使用firebase进行身份验证
- git - Jenkins-trigger- BitBucket webhook 网络错误问题
- node.js - 返回 api rest with node
- msal.js - 是否建议在 MSAL 中将 loginPopup 或 acquireTokenPopup 用于 Web 应用程序?
- node.js - 护照认证和登录重定向
- apache-spark - 在 Spark Streaming 上使用 HiBench 基准测试时如何设置 blockInterval?
- r - 如何使用ggplot2绘制与排序点叠加的箱线图
- python - 在 AWS Lambda Python 中导航事件
- sql-server - Power BI 无法连接到 SQL 服务器
- csv - Julia 将 DataFrame 写入 csv 失败 UndefRefError: access to undefined reference