如何在MySQL中每行两次选择相同的UUID值?

时间:2017-01-22 23:54:22

标签: mysql

如何在MySQL中每行两次选择相同的UUID值?

示例代码:

SELECT CONCAT('A: ', A, ', ', B, '-----', B) C
FROM
(
  SELECT UUID() B
    ,A
  FROM
  (
    SELECT 1 A
    UNION ALL
    SELECT 2
  ) IQ
) OQ;

预期值:

  • C(专栏)
  • A:1,AAAAAAAAAAAA-AAAAAAAA-AAAAAAAAAAAA ----- AAAAAAAAAAAA-AAAAAAAA-AAAAAAAAAAAA
  • A:2,bbbbbbbbb -bbbb-bbbb-bbbb-bbbbbbbbbbbb ----- bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb

上面代码示例的实际示例输出:

  • C(专栏)
  • A:1,a1a3a027-e0fc-11e6-9aa2-bcee7b9e8497 ----- a1a3a038-e0fc-11e6-9aa2-bcee7b9e8497
  • A:2,a1a3a047-e0fc-11e6-9aa2-bcee7b9e8497 ----- a1a3a04a-e0fc-11e6-9aa2-bcee7b9e8497

换句话说,我不能让7和8(从一个基础上)的索引中的数字对于同一行是相同的。

我也试过在MID,CONCAT和CAST中包装UUID()函数无济于事。

MySQL版本:

C:\[directory]\mysql\data>mysql -V
mysql  Ver 14.14 Distrib 5.7.17, for Win32 (AMD64)

1 个答案:

答案 0 :(得分:0)

我能够通过将UUID()的结果作为变量内联存储来解决问题,即使我从不使用变量:

SELECT CONCAT('A: ', A, ', ', B, '-----', B) C
FROM
(
    SELECT

        @unused := #otherwise useless variable
            UUID() B
        ,A
    FROM
    (
        SELECT 1 A
        UNION ALL
        SELECT 2
    ) IQ
) OQ;