mysql: проблема с условным выражением, затем greather

#mysql #conditional-statements

#mysql #условные операторы

Вопрос:

Когда я запускаю этот запрос, он работает

 SELECT sum( amount ) AS balance FROM balance WHERE amount >= 100
  

но когда я хочу отфильтровать идентификатор пользователя, он возвращает NULL

 SELECT sum( amount ) AS balance FROM balance WHERE amount >= 100 AND userid=4
  

Ответ №1:

Он вернет NULL, если строк нет. Если вы хотите вместо нуля использовать это:

 SELECT IFNULL(SUM(amount), 0) AS balance
FROM balance
WHERE amount >= 100 AND userid = 4
  

Если вы считаете, что ответом должно быть что-то отличное от 0 или NULL, тогда я предлагаю вам выполнить этот запрос, чтобы дважды проверить, возвращена ли хотя бы одна строка и верны ли данные:

 SELECT * 
FROM balance
WHERE amount >= 100 AND userid = 4
  

Комментарии:

1. не имеет значения, возвращает ли оно NULL или 0. Я выполнил запрос, но изменил 100 на 20, и он возвращает строки, как ожидалось.

2. Я обнаружил проблему, я составляю сумму amount, но затем я проверяю индивидуальную сумму, только если она больше или равна 100. Итак, я изменил where на следующее, и, похоже, это работает: ГДЕ userid = 4 ГРУППИРУЕТСЯ ПО идентификатору пользователя, имеющему sum (сумму) >= 100

3. вы помогли мне найти правильный путь к ответу, поэтому я пометил его как отвеченный 🙂