更新:当您坚持将其作为数字时,请像这样创建您的视图:
SELECT
(@rownum:=@rownum + 1) AS rownumber,
yourTable.*
FROM
yourTable
, (SELECT @rownum:=0) r
但事实就是如此——没有其他可能性了。就像我在评论中所说的那样投射 rownumber long
,如果真的,真的必须是long
.
或者在一个过程中:
DELIMITER $$
CREATE PROCEDURE selectFromWhatever()
BEGIN
SELECT
(@rownum:=@rownum + 1) AS rownumber,
yourTable.*
FROM
yourTable
, (SELECT @rownum:=0) r;
END $$
DELIMITER ;
然后得到结果
CALL selectFromWhatever()
原答案:
来自 MySQL 手册:
UUID()
返回根据“DCE 1.1:远程过程调用”(附录 A)CAE(通用应用程序环境)规范生成的通用唯一标识符 (UUID),该规范由 The Open Group 于 1997 年 10 月发布(文档编号 C706,
http://www.opengroup .org/public/pubs/catalog/c706.htm)。
UUID 被设计为在空间和时间上全球唯一的数字。对 UUID() 的两次调用预计会生成两个不同的值,即使这些调用是在未相互连接的两台独立计算机上执行的。
UUID 是一个 128 位数字,由五个十六进制数字组成的 utf8 字符串表示,格式为 aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee:
前三个数字是从时间戳生成的。
第四个数字保留时间唯一性,以防时间戳值失去单调性(例如,由于夏令时)。
第五个数字是提供空间唯一性的 IEEE 802 节点号。如果后者不可用(例如,因为主机没有以太网卡,或者我们不知道如何在您的操作系统上找到接口的硬件地址),则替换为随机数。在这种情况下,无法保证空间唯一性。然而,碰撞的概率应该非常低。
目前,接口的 MAC 地址只在 FreeBSD 和 Linux 上被考虑在内。在其他操作系统上,MySQL 使用随机生成的 48 位数字。
mysql> 选择 UUID(); -> '6ccd780c-baba-1026-9564-0040f4311e29'
警告
尽管 UUID() 值旨在是唯一的,但它们不一定是不可猜测或不可预测的。如果需要不可预测性,则应以其他方式生成 UUID 值。笔记
UUID() 不适用于基于语句的复制。
另一种方法是使用CONCAT()
来构建您的唯一 ID。
SELECT CONCAT(PRINCIPAL_ID, '-', GROUP_ID) AS myUniqueID
FROM yourTable