0

このクエリを実行したところ、エラー " The ORDER BY clause is invalid in views, inline functions, derived tables, subqueries, and common table expressions, unless TOP or FOR XML is also specified."が発生しました

内部クエリで使用してこの問題を解決しTOPましたが、場合によってはレコード数を測定しません。それを整理する他の可能性はありますか?

select *
from rs_column_lang
where column_id in (
    select column_id
    from rs_column
    order by column_id
)
4

5 に答える 5

3

内部クエリにをorder by使用しても意味がありません。一致するレコードについて外側のクエリをチェックしていますが、一致を見つけるために内側のクエリでテーブル全体を読み取っています。その内部クエリの並べ替えは何の役にも立たないため、SQL Server はあなたに怒鳴りつけます。

他の回答が示すように、あなたの目標が結果をソートすることであると仮定すると、あなたorder byは内側のクエリではなく、外側のクエリの一部である必要があります。

a が内部クエリで機能する理由は、top注文内容に応じてクエリの結果が変わるためです。しかし、順番を変えるだけでは結果は変わりません。

于 2013-06-06T14:37:50.043 に答える
1

これを試して

select  * from rs_column_lang
where column_id in 
(
select column_id from rs_column
)
order by column_id
于 2013-06-06T14:33:06.733 に答える
1
select  * from rs_column_lang
where column_id in (
select column_id from rs_column
)
order by column_id
于 2013-06-06T14:33:16.963 に答える
0

このようにクエリを最適化する必要があります

select A.*
from rs_column_lang A
  inner join rs_column B on A.column_id = B.column_id
order by A.column_id

これは単純な内部結合であるため、DB オプティマイザーが内部結合を認識しない場合、パフォーマンスが大幅に向上します。

于 2013-06-06T14:58:48.023 に答える
0

column_id には rs_column_lang と rs_column に同じデータが含まれているため、外側のクエリで ORDER BY を移動するだけです。

SELECT * FROM rs_column_lang
WHERE column_id IN (
    SELECT column_id FROM rs_column
)
ORDER BY column_id
于 2013-06-06T14:37:19.137 に答える