如何编写mysql查询将变量值与列值进行比较,得到最高记录或次最高记录

5ssjco0h  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(327)

我在mysql中有一个表,只有很少的记录,所以我想比较price列的值。
如果从变量传递的值小于price列的值,则获取第二高的记录,product id=“p1”
如果从变量传递的值大于price列值,则获取product id=“p1”的最高记录
这是我的table

id  product price
1   p1    2000
2   p2    3000
3   p3    4000
4   p1    2500

如果我们想将“price”列与值$var='1800'和product=“p1”进行比较,那么输出应该是第二高的记录,因为变量值小于price列值
输出:

id  product  price
1    p1      2000

但如果我们传递value$var=5000作为price列,product=“p1”,那么
输出应为:

id  product  price
4    p1       2500
nwsw7zdq

nwsw7zdq1#

DROP TABLE IF EXISTS my_table;

CREATE TABLE my_table
(id SERIAL PRIMARY KEY
,product INT NOT NULL
,price INT NOT NULL
);

INSERT INTO my_table VALUES
(1,1,2000),
(2,2,3000),
(3,3,4000),
(4,1,2500);

mysql> SELECT *, ABS(price-1800) x FROM my_table WHERE product = 1 ORDER BY x LIMIT 1;
+----+---------+-------+-----+
| id | product | price | x   |
+----+---------+-------+-----+
|  1 |       1 |  2000 | 200 |
+----+---------+-------+-----+
1 row in set (0.00 sec)

mysql> SELECT *, ABS(price-5000) x FROM my_table WHERE product = 1 ORDER BY x LIMIT 1;
+----+---------+-------+------+
| id | product | price | x    |
+----+---------+-------+------+
|  4 |       1 |  2500 | 2500 |
+----+---------+-------+------+

相关问题