如何在MySQL中选择两个具有相同类别的随机行

时间:2013-10-08 09:38:39

标签: mysql sql

我是javascript和nodejs的初学者,对mysql知之甚少。 这些是我的MySQL表的列名,其名称为cars

  • 名称
  • 模型
  • TransmissionType
  • EngineSize
  • VehicleSize
  • 体形

我想从Name中随机选择modelcars,但类别必须匹配,这将由其他四个颜色决定:TransmissionType,{{1 }},EngineSizeVehicleSize,以便随机选择的汽车必须共享Body TypeengineTransmissionType和{{1}的相同值}。输出应该只有两行。

引擎大小的值为VehicheSize

TransmissionType的值为:BodyType3.2, 3.5, 1.6, 5.2, 2.0, 2.2

VehicleSize的值为:ManualAutomaticCompact

BodyType的值为:MidSizeLargeCar

我应该写什么查询才能实现这个目标?请帮忙。

我做了这个,并且查询工作正常,但是在其中运行的子查询太多了,是否有可能使用更多的den 2-3子查询来实现这一点?

van

2 个答案:

答案 0 :(得分:1)

如果您正在搜索与某些类别匹配的车辆列表,您可以这样做;

SELECT Name, model, Id * RAND() AS random_no
FROM   cars
WHERE  EngineSize = '2.2'
AND    TransmissionType = 'Automatic'
AND    VehicleSize = 'Large'
AND    BodyType = 'Car'
ORDER by random_no
LIMIT 1

如果您是动态执行此操作,则应通过javascript中的参数传递值(上面示例中的硬编码)。

答案 1 :(得分:0)

SELECT Name, model
FROM   cars
WHERE  EngineSize = '2.2'
AND    TransmissionType = 'Automatic'
AND    VehicleSize = 'Large'
AND    BodyType = 'Car'
ORDER by RAND()
LIMIT 2

此选择将选择适合where子句的所有结果,以随机方式重新排序结果,然后将返回限制为符合条件的前2。有关详细信息,请参阅this blog,这些instructions和此SO post