[英]Update mysql database with subquery condition
我想寫1 SQL語法,將當前事務放在組中。 此交易必須在最近60秒內完成。 通過分配組ID號(GRID)可以完成當前事務與其他現有事務的分組,該組ID號也從最近一次執行的其他事務復制而來。
換句話說:購買已完成,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個解決方案:
在探索我的問題一段時間后,我來了解決方案。 以下MySQL語法符合我的要求。
請注意非常有趣的MySQL函數IFNULL()。 可以很方便!
UPDATE TRANSACTIONS
SET GRID=(SELECT G FROM
(SELECT IFNULL(GRID, 'NO ID') 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();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.