比较来自不同行和列的值以获得单个结果

时间:2012-11-10 08:49:09

标签: mysql

以下是我的方案说明:

myTable的

ID name width1 width2 parameter1 parameter2 code
1  AAA  0      10     500        750        10001
2  AAA  0      10     750        1250       10002 
3  AAA  0      10     900        1400       10003
4  AAA  0      10     1150       1650       10004
.................................................
.................................................
.................................................

让我们说我正在与一些拥有自己属性的“主题”合作。根据主题属性和具有相同属性的一些计算,我应该从此表中选择“代码”。

所以,我正在使用的这个主题名称为: AAA ,宽度: 5 ,并且我的计算得到参数: 1000 即可。在我拥有所有必要的属性后,我可以将它们与myTable中的行进行比较。对于更大的图片,我将从此表中选择所有,但我的目标是获取代码。这是查询:

SELECT * FROM myTable WHERE name="AAA" AND 5>=width1 AND 5<=width2 AND 1000>=parameter1 AND 1000<=parameter2

在此之后我得到这两行:

ID name width1 width2 parameter1 parameter2 code
2  AAA  0      10     750        1250       10002 
3  AAA  0      10     900        1400       10003

请注意,这里可能只有一行。但是,如果我得到两行,我需要做以下。我完全专注于这些参数,我将比较第一行中我的参数和参数2之间的差异,并在第二行中的参数和参数1之间进行比较。

parameter -> parameter2
1250 - 1000 = 250
&
parameter1 -> parameter
1000 - 900 = 100

因此,如果spread1:250&gt; spread2:100取code2:00002否则取code3:00003。

我的问题是,如何比较不同行和列的值?如您所见,我有两行和不同列的值。我需要的是一种选择这些特定值进行比较的方法。

谢谢。

1 个答案:

答案 0 :(得分:2)

它似乎是由来自最少的Greatest解决的,所以起初我们得到的价值最小,并命令这种下降。

SELECT 
  code
FROM 
  myTable 
WHERE 
  name="AAA" 
AND 
  5 >= width1 
AND 
  5 <= width2 
AND 
  1000 >= parameter1 
AND 
  1000 <= parameter2
ORDER BY 
  Least( parameter2-1000, 1000-parameter1 ) desc
LIMIT 1;

SQL Fiddle