以下是我的方案说明:
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。
我的问题是,如何比较不同行和列的值?如您所见,我有两行和不同列的值。我需要的是一种选择这些特定值进行比较的方法。
谢谢。
答案 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;