好的,这是我的桌子

------------------------------------------------
Textid                  type
-----------------------------------------------
1                      a
2                      b
1                      a
1                      c
2                      c
1                      a
3                      a
------------------------------------------------

现在,我需要一个查询,可以给我这个输出。。。
-------------------------------------
Distinct(textid)   |   rand(type)   |
--------------------------------------
1                          a
2                          c
3                          a
--------------------------------------

兰德(类型)给我号码。。。。是否需要在rand()中传递不同的记录,如random(SELECT type FROM mytable)
更新
我正试图从与该不同id相关联的表和随机字段(类型)中获取不同id

最佳答案

SELECT  textid,
        (
        SELECT  type
        FROM    mytable mi
        WHERE   mi.textid = md.textid
        ORDER BY
                RAND()
        LIMIT 1
        )
FROM    (
        SELECT  DISTINCT textid
        FROM    mytable
        ) md

mytable (textid, type)上创建一个复合索引以使其快速工作:
CREATE INDEX ix_mytable_textid_type ON mytable (textid, type)

10-02 20:40