首页 > 解决方案 > 如何从查询中获取 X 个随机记录

问题描述

我在这里有这个主要查询:

SELECT tbl_vehicles.id, tbl_vehicles.Model, tbl_vehicles.Brand, tbl_vehicles.isAutoTrans, tbl_vehicles.Seats, tbl_vehicles.Price, tbl_brands.BrandName
FROM tbl_vehicles
INNER JOIN tbl_brands
ON tbl_vehicles.Brand=tbl_brands.id
ORDER BY id

我需要得到上述查询的 9 个随机结果。我在这里找到了这个答案,这正是我所需要的。

SELECT * FROM tbl_vehicles AS r1 JOIN (SELECT CEIL(RAND() * (SELECT MAX(id) FROM tbl_users)) AS id) AS r2 WHERE r1.id >= r2.id ORDER BY r1.id ASC LIMIT 9

我怎样才能把它们放在一起并保持我的内在联系?

显然我的结构是错误的,但为什么呢?

SELECT * FROM tbl_vehicles INNER JOIN tbl_brands ON tbl_vehicles.Brand=tbl_brands.id ORDER BY id AS r1 JOIN (SELECT CEIL(RAND() * (SELECT MAX(id) FROM tbl_users)) AS id) AS r2 WHERE r1.id >= r2.id ORDER BY r1.id ASC LIMIT 9

标签: mysqlsql

解决方案


我需要得到上述查询的 9 个随机结果

这还不够吗?

SELECT 
  v.id, v.Model, v.Brand, v.isAutoTrans, v.Seats, v.Price, b.BrandName
FROM
  tbl_vehicles v
  INNER JOIN tbl_brands v ON v.Brand = b.id
ORDER BY
  RAND()
LIMIT 9;

推荐阅读