0

次のようなSQLステートメントがあります。

SELECT * FROM table1 AS bl  
INNER JOIN table2 AS vbsa ON bl.id=vbsa.businesslisting_id AND vbsa.section_id ='70'  
INNER JOIN table3 AS vbla ON bl.id=vbla.businesslisting_id AND vbla.location_id='1'  
WHERE bl.published = '1' 
ORDER BY bl.listing_type DESC

何らかの理由で、これは行を返しませんが、ORDER BY句を削除すると、行が返されます。なぜこれになるのか、何か考えはありますか?

列listing_typeはDBに存在し、数値が含まれています。varcharタイプとして設定されます。これが問題かもしれないと思いましたが、別の列(ID)を試しましたが、それでも機能しませんでした。

ありがとうロバート

4

2 に答える 2

0

問題が見つかりました。私は他の誰かのコードに取り組んでいますが、彼らは問題のテーブルにインデックスを追加しませんでした。

したがって、sort by属性を追加してクエリを実行すると、MAX_JOIN_SIZE行を超えていました。

インデックスを追加したところ、完璧に機能するようになりました。

皆様からのご意見ありがとうございました。

于 2012-05-28T21:28:09.603 に答える
0

これを試して

SELECT * FROM table1 AS bl  
INNER JOIN table2 AS vbsa ON bl.id = vbsa.businesslisting_id
INNER JOIN table3 AS vbla ON bl.id = vbla.businesslisting_id
WHERE bl.published = 1 AND vbsa.section_id = 70 AND vbla.location_id = 1
ORDER BY bl.listing_type DESC

また、SQLをデバッグするときは、エラーメッセージを確認してください。これらのエラーを確認せずに修正しようとすると、困難になります。

于 2012-05-28T15:31:04.040 に答える