Я новичок в 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
Поэтому я хочу проверить, есть ли два значения "ширина" с разницей +1000 или -1000. Результат всегда равен нулю. не могли бы вы рассказать мне, что не так с запросом?
Я не совсем понимаю, каковы ваши данные. Как я понимаю, вы хотите узнать, имеет ли два значения из двух столбцов конкретную разницу, то есть первое значение в первом столбце равно 2000, а первое значение во втором столбце равно 1000, так как существует разница в 1000 вам хочу, чтобы это было отмечено. Вы можете использовать функцию CASE
(подробнее см. Https://www.w3schools.com/sql/func_mysql_case.asp).
Скажем, у вас есть один столбец с именем width_1
который состоит из разных значений ширины, а второй столбец с именем width_2
который также состоит из разных значений ширины, все они содержатся в таблице с именем width_table
, вы можете использовать следующее:
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 ;
Это создаст столбец, чьи записи будут либо 1, если разница в точности +1000 или -1000, или 0, если разница - это что-то еще.
Если вы хотите проверить, существует ли разница между 1000 и -1000, вы можете использовать следующее:
SELECT
CASE
WHEN width_1 - width_2 BETWEEN -1000 AND 1000 THEN TRUE
ELSE FALSE
END AS column_name
FROM width_table ;