Я хочу написать 1 синтаксис SQL, который поместит текущую транзакцию в группу. Эта транзакция должна была быть сделана в течение последних 60 секунд.
Группирование текущей транзакции с другими существующими транзакциями выполняется путем назначения номера идентификатора группы (GRID), который копируется из другой транзакции, также выполненной в течение последней минуты.
Другими словами:
Покупка завершена, и SQL-скрипт будет искать другие покупки, которые были сделаны в последнюю минуту, и, если найден, он будет брать номер группы из найденной строки и присваивать текущую покупку, поэтому в этом случае каждая покупка, сделанная в течение минуты, окажется в группа.
Это заявление об обновлении, которое я составил ниже
UPDATE TRANSACTIONS
SET GRID=(SELECT G FROM
(SELECT GRID AS G
FROM TRANSACTIONS
WHERE CUST_ID='123ID'
AND STAMP+60>UNIX_TIMESTAMP()
LIMIT 1)
AS t),
STAMP=UNIX_TIMESTAMP()
WHERE CUST_ID='123ID'
AND STAMP+60>UNIX_TIMESTAMP();
Однако это всегда возвращает количество обновленных строк, даже если существующая строка является только той, которая должна быть обновлена, или другой найденной строке еще не присвоен номер группы. Что очевидно, поскольку оно обновляется с любым значением, найденным в подзапросе. Если ничего не найдено, он обновится с пустым значением.
Есть 2 решения, которые меня интересуют:
- Я хочу, чтобы этот скрипт прекратил выполнение обновления (по условию), если найденное (из подзапроса) значение в основном пусто.
или
- Я хочу вставить условие, что если подзапрос возвращает пустое значение, вместо него будет вставлена строка исправления символов.