我有一个表,其中包含一个名为 ticket_id 的列,它包含如下值:
ticket_id
STK0000000001
STK0000000002
STK0000000001
STK0000000003
STK0000000002
STK0000000001
ticket_id 值会在某些行中重复,因此它不是唯一的。
我正在使用此查询获取下一个可用 ID,但我无法使其正常工作。它始终返回 STK0000000002
。
感谢任何帮助!
SQL:
SELECT
CONCAT('STK', LPAD(seq, 10, '0')) AS nextID
FROM
(SELECT
@seq:=@seq+1 AS seq,
num
FROM
(SELECT
CAST(SUBSTR(ticket_id, 4) AS UNSIGNED) AS num
FROM
sma_support_tickets
UNION ALL
SELECT
MAX(CAST(SUBSTR(ticket_id, 4) AS UNSIGNED))+2 AS num
FROM
sma_support_tickets
ORDER BY
num) AS ids
CROSS JOIN
(SELECT @seq:=0) AS init
) AS pairs
WHERE
seq!=num
LIMIT 1
最佳答案
也许我在你的问题中遗漏了一些东西,但似乎应该这样做:
SELECT CONCAT('STK',
LPAD(MAX(SUBSTRING(ticket_id, 4)) + 1,
10,
'0')
)
FROM sma_support_tickets;
关于mysql - SQL 查询从表中检索下一个可用 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24424971/