SQL-选择其中具有特定值和其他随机值的列

时间:2019-01-21 14:04:45

标签: mysql sql select

我说我有一个名为test的表,其中包含以下数据

+---------+-----------------+
| id      | t_number        |
+---------+-----------------+
|       1 | 864291100247345 |
|       2 | 355488020906457 |
|       3 | 864296100098739 |
|       4 | 864296100098325 |
|       5 | 864296100119956 |

我想做的是能够写一条select语句,该语句返回一个3行,其中包含t_number列中的两个随机值和一个强制值 例如,如果强制值为864291100247345,则输出应如下所示

+---------+-----------------+
| id      | t_number        |
+---------+-----------------+
|       1 | 864291100247345 |
|       2 | 355488020906457 |
|       4 | 864296100098325 |

OR

+---------+-----------------+
| id      | t_number        |
+---------+-----------------+
|       1 | 864291100247345 |
|       3 | 864296100098739 |
|       4 | 864296100098325 |

我尝试了以下查询,但在某种意义上说它确实返回了结果但没有必填值,但并未产生我期望的输出

SELECT * FROM test WHERE t_number = 864291100247345 OR id LIMIT 3;

最好的方法是什么?

谢谢。

1 个答案:

答案 0 :(得分:2)

您可以使用order by

SELECT t.*
FROM test 
ORDER BY (t_number = 864291100247345) DESC,
         rand()
LIMIT 3;

这将首先返回必需数字,然后再返回随机数字。

MySQL将布尔值(=表达式的结果)视为数字上下文中的数字,其中“ 1”表示true,“ 0”表示false。因此,order by中的第一个表达式首先对具有“ true”条件的结果集进行排序,然后对其他条件进行排序。