gpt4 book ai didi

sql - 将 WHERE 和 IN 子句与两个字段组合

转载 作者:搜寻专家 更新时间:2023-10-30 22:03:58 24 4
gpt4 key购买 nike

我有一个包含 3 列(id、名称、价格)的表“goods”。我需要通过 ID 列表和价格范围获取数据。

我正在使用这个查询:

SELECT id, name, price FROM goods
WHERE (id, price)
IN ((1,10), (3,20), (2,10))
ORDER BY FIELD(id, 1,3,2)

当我使用严格的价格值时,一切都很好。

事实上,我需要做这样的查询:

SELECT id, name, price FROM goods
WHERE (id, price)
IN ((1, BETWEEN 0 AND 100), (2, BETWEEN 50 AND 150), (n, BETWEEN m AND k))
ORDER BY FIELD(id, 1,3,n)

我发现表达式 (1, BETWEEN 0 AND 100) 永远不会返回我需要的结果,而 (1,10) 会。

我当然可以在 php 中按价格范围排除记录,但我正在尝试使用索引在 mysql 查询中找到更有效的方法来执行此操作。我该怎么办?

最佳答案

你不能那样使用 BETWEEN。尝试将您的 IN 表达式更改为一系列 OR:

SELECT id, name, price
FROM goods
WHERE
(id = 1 AND price BETWEEN 0 AND 100) OR
(id = 2 AND price BETWEEN 50 AND 150) OR
(id = n AND price BETWEEN m AND k)
ORDER BY FIELD(id, 1,3, n)

关于sql - 将 WHERE 和 IN 子句与两个字段组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4974774/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com