我有一个表 prices
,有 4 列(id
、price1
、price2
、date
)
一些解释:
- id 未设置为自动递增,并且可以有许多具有相同的 ID 值(即Id 123可以存在5次,但具有不同的参数)。
- price1和price2是两个十进制值,它们将price1存储为起始价格,将price2存储为最终价格
- date 为 VARCHAR ( 15),以代码形式存储价格日期(例如“J2015”——2015 年 1 月),并且是使用它的应用程序的某种 ID。
对 i.E. 的正常查询选择用于查询的 Id、price1 和 Price2
SELECT `id`, `price1`, `price2`
FROM `prices`
WHERE `price1` = '1.23' AND `price='3.45' AND `date`='J2015'
但随后一位客户想要扩展搜索范围。他想要所有通过以下条件的 ID(示例:)
价格1 = '1.50' AND 价格2 = '1.75' AND 日期 = 'AP2013'
还有
价格1 = '1.39' AND 价格2 = '1.45' AND 日期 = 'MAY2013'
起初我想使用 IN 参数,但这会/可能返回不正确的数据。所以我现在陷入困境。
最佳答案
使用自加入
SELECT p1.id
FROM prices AS p1
JOIN prices AS p2 ON p1.id = p2.id
WHERE p1.price1 = '1.50' AND p1.price2 = '1.75' AND p1.date = 'AP2013'
AND p2.price1 = '1.39' AND p2.price2 = '1.45' AND p2.date = 'MAY2013'
关于MySQL SELECT - 相同记录必须匹配更多值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31217691/