php - 尝试在大于和小于 mysql 表 php 内部时创建查询

标签 php mysql

请看下面我的表格。当我有一个 value 和 cat 时,我想检查 id。如果我有 cat a 和值 3,那么我将得到 id 1,但是如果我得到 cat a和值 1,然后返回 false,因为值 1 不大于 2。问题是更大的符号在表内。我想不出在 mysql 查询上执行此操作的方法,请帮忙。如果需要,我可以更改表值结构。

table 
id     cat       value
1       a      greater than 2
2       b       less than 2
3       c       less than 2
4       d      greater than 5

$val = 3;
SELECT id FROM my_table WHERE value=$val and cat = a

最佳答案

table 
id     cat       lbound       ubound
1       a         2            2147483647  (Assuming signed int)
2       b         -2147483648  2
3       c         -2147483648  2
4       d         5            2147483647

$cat = 'a';
$val = 3;
SELECT id 
FROM my_table 
WHERE cat = $cat
   AND lbound <= $val -- If you use nulls instead of default extreme values,
   AND ubound >= $val -- then these two bounds comparisons will be more complicated
ORDER BY lbound DESC LIMIT 1 -- if overlapping ranges are possible

在设计方面,我更喜欢默认的“无限制”值使用空值,但使用 OR 的表达式如 AND (lbound IS NULL OR lbound <= $val) ,或类似 IFNULL(lbound,-2147483648) <= $val 的功能倾向于取消索引使用的资格。

关于php - 尝试在大于和小于 mysql 表 php 内部时创建查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38858248/

相关文章:

php - 不知道mysql的正确方法

Javascript 验证文件输入名称

mysql - 重写一个嵌套的mysql查询以创建 View

具有引用列的 MySQL JOIN 表

php - Codeigniter - session 登录错误

php - 如何在 WooCommerce 中循环查看订单商品数量

mysql - BigQuery - 如何创建一个新列,其中计算包括新列本身?

PHP PDO 连接数据库

mysql - 如何显示实体和数据库表结构之间的差异

php - 如何在php中将mysql结果转换为数组?