【发布时间】:2012-12-11 16:05:46
【问题描述】:
这是我的桌子:
我想从中选择代码和编号,这是我的查询的可视化:
这是查询:
SELECT Code,Number,(1894 - Limit1) AS spread1,(Limit2 - 1894) AS spread2
FROM MyTable WHERE Name="John" AND 600>=L1 AND 600<=L2
AND 1894>=Limit1 AND 1894<=Limit2
如图所示,此查询返回两个值,我只需要一个。所以我应该将 row1 中的 spread2 与 row2 中的 spread1 进行比较,并获取更大点差的代码和数量如果是spread2。
我为什么要比较 row1 的 spread2 和 row2 的 spread1 是因为它们相互重叠。所以,我正在比较重叠范围内的点差:
通过上面的查询,我只能得到结果只有一两行,永远不会更多。为什么?因为表是这样创建的。如果结果显示一行,我将不需要任何比较,这意味着我只有一个代码和数字。
因此,归根结底,我需要扩展我的查询来执行上述操作。
我尝试的是添加:
ORDER BY (spread2,spread1) DESC LIMIT 1
而且我确信它不会像我想要的那样比较值,而是比较来自同一行的值。
【问题讨论】:
-
为什么要比较 spread2 和 spread1?如果结果中有 3 行怎么办?此外,
take Code and Number of bigger spread请注意 3006 > 1144 所以你应该返回 3006 的行,对吧? -
你的照片对我来说没有意义。你能解释一下吗?
-
为什么不考虑
1144和3006? -
试试
ORDER BY LEAST(Limit2 - 1894, 1894 - Limit1) DESC LIMIT 1 -
@MostyMostacho 我已经为你更新了我的问题。
标签: mysql