我是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。 你能告诉我查询有什么问题吗?
答案 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 ;