0

私はjavascriptとnodejsの初心者で、mysqlの知識があまりありません。これらは、名前が次のMySQLテーブルの列名ですcars:

  • 名前
  • モデル
  • 伝送タイプ
  • エンジンの大きさ
  • 車両サイズ
  • ボディタイプ

からとをランダムに選択Nameしたいのですが、カテゴリは、他の 4 つの列によって決定されるものと一致する必要があります。出力は 2 行のみにする必要があります。modelcarsTransmissionTypeEngineSizeVehicleSizeBody TypeengineTransmissionTypeVehicheSizeBodyType

エンジンのサイズには次の値があります。3.2, 3.5, 1.6, 5.2, 2.0, 2.2

TransmissionType には次の値がありますManualAutomatic

VehicleSize の値はCompact、 、MidSizeおよびLargeです。

BodyType の値はCar、 、vanおよびtruckです。

これを達成するには、どのようなクエリを作成する必要がありますか? 助けてください。

私はこれを行い、クエリは正常に動作していますが、実行中のサブクエリが多すぎます.2-3 デンのサブクエリを使用しないでこれを達成することは可能ですか?

SELECT Name, model 
FROM cars 
WHERE EngineSize IN (SELECT * FROM (SELECT EngineSize FROM cars  ORDER BY RAND( ) LIMIT 1 ) AS A)  
AND TransmissionType IN (SELECT * FROM (SELECT TransmissionType  FROM cars ORDER BY RAND( ) LIMIT 1 ) AS B)
AND BodyType IN (SELECT * FROM (SELECT BodyType  FROM cars ORDER BY RAND( ) LIMIT 1 ) AS C)   
AND VehicleSize IN (SELECT * FROM (SELECT VehicleSize` FROM cars ORDER BY RAND( ) LIMIT 1 ) AS D)    
LIMIT 2
4

2 に答える 2

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 のパラメーターによって値 (上記の例ではハードコードされています) を渡す必要があります。

于 2013-10-08T09:45:08.980 に答える
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 つの結果に制限されます。詳細については、このブログ、これらの手順、およびこのSO 投稿を参照してください。

于 2013-10-08T13:08:29.910 に答える