我有一张这样的桌子。
姓名 | c1 | c2 | c3 | c4 |
---|---|---|---|---|
一个 | 1 | 2 | 3 | 4 |
一个 | 3 | 1 | 7 | 6 |
一个 | 5 | 9 | 2 | 5 |
一个 | 2 | 5 | 1 | 8 |
两个 | 1 | 4 | 2 | 6 |
两个 | 等等...... |
我想随机选择一列,条件名称等于1。
结果应该是这样的:
c1(此栏将随机选择) |
---|
1 |
3 |
5 |
2 |
简单一点怎么样,
select <col_name> from <table_name> where name = 'one';
select <col_name> from <table_name> where name = 'one' order by newid();
newid()函数调用的顺序将有助于随机化返回的行。
SELECT <col_name> FROM <table_name> WHERE name = 'one' ORDER BY RAND() Limit 1
由于我不知道您的 DBMS,因此这是一个与 DBMS 无关的查询,它将从您的表中随机选择一列:
SELECT
CASE round(3*rand()+1)
WHEN 1 THEN c1
WHEN 2 THEN c2
WHEN 3 THEN c3
WHEN 4 THEN c4
END;
FROM
<table_name>
WHERE
name = 'one'
哪里
round()
是对其参数进行四舍五入的函数。
round(1.23) = 1
round(-1.58) = -2
和
rand()
是一个在 v
范围内生成随机值 0 <= v < 1.0
的函数。
rand() => 0.123687466
rand() => 0.996574545