планировщик событий рассчитывает условие if для результата - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть следующий запрос, я хочу обновить базу данных, если число уникально, то есть 1. Я создал все это событие в планировщике событий mysql.Но есть проблемы, которые я не могу определить.Пожалуйста, помогите мне, если возможно, запрос, как показано ниже:

SELECT user_id, count(*) as cnt from auction_details a JOIN products p where p.product_id = a.product_id AND p.end_time ='2018-09-12 08:35:30' GROUP by bidprice order by bidprice

enter image description here

ЦЕНА ТОРГОВЛИ ДОЛЖНА БЫТЬ УНИКАЛЬНОЙ, чтобы ОБНОВИТЬ СТОЛ В СОБЫТИИSCHEDULER

Я хочу, чтобы это произошло в планировщике событий.Мне кажется, что я сделал это в планировщике событий:

DELIMITER |
DO
BEGIN 
DECLARE cnt AS INT;
SELECT user_id, count(*) as cnt from auction_details a JOIN products p where p.product_id = a.product_id AND p.end_time ='2018-09-12 08:35:30' GROUP by bidprice order by bidprice DESC LIMIT 1;    
IF cnt=1 THEN

SET @userid = SELECT user_id from auction_details a JOIN products p where p.product_id = a.product_id AND p.end_time ='2018-09-12 08:35:30' GROUP by bidprice order by bidprice DESC LIMIT 1;    
update products p join auction_details a on a.product_id = p.product_id join users u on u.user_id = a.user_id set p.winner = @userid WHERE p.end_time ='2018-09-12 08:35:30';
END IF;    

END |DELIMITER;

Предполагается, что ожидаемый вывод получит идентификатор пользователя из запроса с уникальным счетчиком, т. Е. 1, и обновит таблицу продуктов и установит победителем этот идентификатор пользователя.

enter image description here

1 Ответ

0 голосов
/ 12 сентября 2018

Вам нужно ON клаусуле вместо WHERE, а также GROUP BY user_id

SELECT user_id, count(*) as cnt 
from auction_details a 
JOIN products p 
  ON p.product_id = a.product_id 
  AND p.end_time ='2018-09-12 08:35:30' 
GROUP by user_id
order by user_id
...