检查MySQL中的值但在特定范围内

时间:2018-04-10 08:19:53

标签: mysql

我是MySQL的初学者,我想检查值但在一定范围内,我有这个:

SELECT t1.width, COUNT( t1.width ) 
FROM test t1
INNER JOIN (
  SELECT t2.width
  FROM test t2
  GROUP BY width
  HAVING COUNT( t2.width ) >1
)t2 ON t1.width BETWEEN (t2.width +1000) AND (t2.width -1000)
ORDER BY t1.width

所以我想做的是检查是否有两个'width'值,相差+1000或-1000。 结果始终为null。 你能告诉我查询有什么问题吗?

1 个答案:

答案 0 :(得分:0)

我不完全了解您的数据是什么。我理解的方式是你要看两列中的两个值是否有特定的差异,即第一列中的第一个值是2000而第二列中的第一个值是1000,因为你有1000个差异希望如此。您可以使用CASE功能(此处更详细https://www.w3schools.com/sql/func_mysql_case.asp)。

假设您有一个名为width_1的列,其中包含不同的宽度值,另一列名为width_2,它也包含不同的宽度值,所有列都包含在名为{{1}的表中},您可以使用以下内容:

width_table

这将产生一个列,如果差异恰好是+1000或-1000,则其条目为1,如果差异为其他,则为0。

如果要检查差异是否介于1000和-1000之间,则可以使用以下内容:

SELECT
CASE
    WHEN width_1 - width_2 = 1000 OR width_1 - width_2 = -1000 THEN TRUE
    ELSE FALSE
END AS column_name
FROM width_table ;