我是javascript和nodejs的初学者,对mysql知之甚少。
这些是我的MySQL表的列名,其名称为cars
:
我想从Name
中随机选择model
和cars
,但类别必须匹配,这将由其他四个颜色决定:TransmissionType
,{{1 }},EngineSize
和VehicleSize
,以便随机选择的汽车必须共享Body Type
,engine
,TransmissionType
和{{1}的相同值}。输出应该只有两行。
引擎大小的值为VehicheSize
TransmissionType的值为:BodyType
和3.2, 3.5, 1.6, 5.2, 2.0, 2.2
VehicleSize的值为:Manual
,Automatic
和Compact
。
BodyType的值为:MidSize
,Large
和Car
。
我应该写什么查询才能实现这个目标?请帮忙。
我做了这个,并且查询工作正常,但是在其中运行的子查询太多了,是否有可能使用更多的den 2-3子查询来实现这一点?
van
答案 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。