gpt4 book ai didi

mysql - 如何从 mysql 表中选择随机列?

转载 作者:搜寻专家 更新时间:2023-10-30 21:56:18 25 4
gpt4 key购买 nike

我的 table 是这样的-

+---------+---------------+------+-----+---------+-------+
| PK | ToicID |topic1|topic2| topic3 |topic4 |
+---------+---------------+------+-----+---------+-------+
| 1 | 1 | abc | xyz | mno | pqr |
+---------+---------------+------+-----+---------+-------+

我使用这个查询-

select * from table order by rand() limit 1

它只给我随机行。但我想随机选择任何主题,如下所示

Topic3
|mno|

==========================================

但条件是该列不应为空或为空。

最佳答案

请检查一下这是否是您要求的?

SELECT  CASE FLOOR(RAND()*4+1)
WHEN 1 THEN TOPIC1
WHEN 2 THEN TOPIC2
WHEN 3 THEN TOPIC3
WHEN 4 THEN TOPIC4 END AS TOPIC_RAND
FROM TABLE;

评论后的更新版本和添加的子句 -NULL/blank in question:

   select version() as 'mysql version';

SELECT CASE FLOOR(RAND()*4+1) /*wrote here just 1 to make tests */
WHEN 1 THEN COALESCE(TOPIC1, TOPIC2, TOPIC3, TOPIC4)
WHEN 2 THEN COALESCE(TOPIC2, TOPIC3, TOPIC4, TOPIC1)
WHEN 3 THEN COALESCE(TOPIC3, TOPIC4, TOPIC1, TOPIC2)
WHEN 4 THEN COALESCE(TOPIC4, TOPIC1, TOPIC2, TOPIC3) END AS TOPIC_RAND
FROM (SELECT NULLIF(TOPIC1,'') AS TOPIC1, NULLIF(TOPIC2,'') AS TOPIC2,NULLIF(TOPIC3,'') AS TOPIC3,NULLIF(TOPIC4,'') AS TOPIC4
FROM TTE1) A;

示例数据

CREATE TABLE TTE1 (TOPIC1 VARCHAR(10), TOPIC2 VARCHAR(10), TOPIC3 VARCHAR(10), TOPIC4 VARCHAR(10));
INSERT INTO TTE1 VALUES ('abc','cde','efg','hij');
INSERT INTO TTE1 VALUES (NULL,'k2','k3','k4');
INSERT INTO TTE1 VALUES ('','i2','i3','i4');

输出:

mysql version
1 5.7.12-log

TOPIC_RAND
1 cde
2 k4
3 i2

关于mysql - 如何从 mysql 表中选择随机列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46322505/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com