タグ付けされた質問 「common-table-expression」

共通テーブル式(CTE)は、単一のSELECT、INSERT、UPDATE、DELETE、またはCREATE VIEWステートメントの実行スコープ内で定義される一時的な結果セットです。

9
共通テーブル式(CTE)を使用する場合
共通テーブル式について読み始めたが、それらを使用する必要があるユースケースを考えることができない。派生テーブルでも同じことができるので、冗長であると思われます。足りないものやよくわからないものはありますか?CTEのケースを作成するために、通常の選択、派生、または一時テーブルクエリの制限の簡単な例を誰かに教えてもらえますか?簡単な例をいただければ幸いです。

4
CTE、サブクエリ、一時テーブル、またはテーブル変数の間にパフォーマンスの違いはありますか?
この素晴らしいではSOの質問、との違いCTEとはsub-queries議論されました。 私は具体的に尋ねたいと思います: 次のそれぞれがどのような状況でより効率的/高速ですか? CTE サブクエリ 一時テーブル テーブル変数 伝統的に、私はtemp tables開発で多くのことを使用しましたstored procedures-それらは絡み合った多くのサブクエリよりも読みやすいように見えるからです。 Non-recursive CTEsはデータのセットを非常にうまくカプセル化し、非常に読みやすいですが、常により良いパフォーマンスを発揮できると言える特定の状況はありますか?それとも、最も効率的なソリューションを見つけるために、常にさまざまなオプションをいじる必要があるのでしょうか? 編集 効率性の観点から、一時テーブルは関連するヒストグラム、つまり統計があるため、最初の選択肢として適していると最近言われました。


6
SELECT * INTO tempTable FROM CTEクエリで一時テーブルを作成する方法
一時テーブルを作成するMS SQL CTEクエリがあります。Invalid Object nameエラーになるのでどうしたらいいのか分かりません。 以下は参照用のクエリ全体です SELECT * INTO TEMPBLOCKEDDATES FROM ;with Calendar as ( select EventID, EventTitle, EventStartDate, EventEndDate, EventEnumDays,EventStartTime,EventEndTime, EventRecurring, EventStartDate as PlannedDate ,EventType from EventCalender where EventActive = 1 AND LanguageID =1 AND EventBlockDate = 1 union all select EventID, EventTitle, EventStartDate, EventEndDate, EventEnumDays,EventStartTime,EventEndTime, EventRecurring, dateadd(dd, 1, …

3
INSERT INTOとWITH / CTEの組み合わせ
非常に複雑なCTEがあり、結果を物理テーブルに挿入したいと思います。 以下は有効ですか? INSERT INTO dbo.prf_BatchItemAdditionalAPartyNos ( BatchID, AccountNo, APartyNo, SourceRowID ) WITH tab ( -- some query ) SELECT * FROM tab 関数を使用して、このCTEを作成し、再利用できるようにすることを考えています。何かご意見は?

2
シンプルに保ち、クエリで複数のCTEを実行する方法
この単純なT-SQLクエリを使用すると、テーブルから一連の列が出力され、他の関連テーブルの情報も結合されます。 私のデータモデルは単純です。参加者と一緒に予定されているイベントがあります。各イベントに参加する参加者の人数を知る必要があります。 これに対する私の解決策は、スケジュールされたイベントをグループ化し、参加者の数をカウントするCTEを追加することです。 これにより、予定されているイベントごとにその情報に参加できます。クエリをシンプルに保つ。 クエリを単純にしたいのですが、将来、単純なクエリ中に一時的な結果にアクセスできるようにする必要がある場合はどうすればよいですか? 複数のCTEを持つことができてもできない場合は、本当にそれを望みます。ここに私のオプションは何ですか? ビューを除外し、アプリケーションデータレイヤーで処理を実行しました。SQLクエリを分離することを好みます。

9
CTEとSubQueryの違いは?
この投稿から次の手順でROW_NUMBERを使用するにはどうすればよいですか? 回答には2つのバージョンがあり、1つはa sub-queryを使用し、もう1つはa を使用しCTEて同じ問題を解決します。 さてCTE (Common Table Expression)、「サブクエリ」よりも使用することの利点は何ですか(したがって、クエリが実際に行っていることをより読みやすくします) 使用しての唯一の利点CTEを超えるにはsub-select、私が実際にできることである名前を付けますsub-query。CTEが単純な(再帰的でない)CTEとして使用される場合、これら2つの間に他の違いはありますか?


2
ステートメントが完了する前に、最大再帰100を使い果たしました
私max recursion errorはこのクエリでを取得し続けます。 最初はnullが返されていて、それが原因でnull値と一致してエラーが発生するためだと思っていましたが、クエリを書き直してnullが返されず、エラーが発生するようにしました。 エラーが発生しないように、この関数を書き換えるための最良の方法は何でしょうか WITH EmployeeTree AS ( SELECT EMP_SRC_ID_NR Id, USR_ACV_DIR_ID_TE Uuid, CASE Employees.APV_MGR_EMP_ID WHEN Null THEN '0' ELSE Employees.APV_MGR_EMP_ID END as ApprovalManagerId FROM dbo.[tEmployees] as Employees WITH (NOLOCK) WHERE APV_MGR_EMP_ID = @Id and Employees.APV_MGR_EMP_ID is not null and Employees.EMP_SRC_ID_NR is not null UNION ALL SELECT EMP_SRC_ID_NR Id, …

7
MySQLで「WITH」句をどのように使用しますか?
すべてのSQL ServerクエリをMySQLに変換していますがWITH、それらのクエリはすべて失敗します。次に例を示します。 WITH t1 AS ( SELECT article.*, userinfo.*, category.* FROM question INNER JOIN userinfo ON userinfo.user_userid = article.article_ownerid INNER JOIN category ON article.article_categoryid = category.catid WHERE article.article_isdeleted = 0 ) SELECT t1.* FROM t1 ORDER BY t1.article_date DESC LIMIT 1, 3

4
SQL Server CTEと再帰の例
再帰でCTEを使用することはありません。私はそれに関する記事を読んでいました。この記事では、SQLサーバーのCTEと再帰を利用して従業員情報を示します。基本的には、従業員とそのマネージャー情報を表示しています。このクエリの仕組みを理解できません。これがクエリです: WITH cteReports (EmpID, FirstName, LastName, MgrID, EmpLevel) AS ( SELECT EmployeeID, FirstName, LastName, ManagerID, 1 FROM Employees WHERE ManagerID IS NULL UNION ALL SELECT e.EmployeeID, e.FirstName, e.LastName, e.ManagerID, r.EmpLevel + 1 FROM Employees e INNER JOIN cteReports r ON e.ManagerID = r.EmpID ) SELECT FirstName + ' ' + …

2
1つのPostgreSQLクエリで複数のWITHステートメントを使用するにはどうすればよいですか?
WITHステートメントを使用して、事実上複数のTEMPテーブルとは何かを「宣言」したいと思います。私が実行しようとしているクエリは、次の行に沿っています。 WITH table_1 AS ( SELECT GENERATE_SERIES('2012-06-29', '2012-07-03', '1 day'::INTERVAL) AS date ) WITH table_2 AS ( SELECT GENERATE_SERIES('2012-06-30', '2012-07-13', '1 day'::INTERVAL) AS date ) SELECT * FROM table_1 WHERE date IN table_2 PostgreSQLのドキュメントを読み、複数のWITHステートメントの使用について調査しましたが、答えを見つけることができませんでした。

8
MySQLの「WITH」句
MySQLを使用して "WITH"句でビューを作成しようとしています WITH authorRating(aname, rating) AS SELECT aname, AVG(quantity) FROM book GROUP BY aname しかし、MySQLがこれをサポートしているようには見えません。 これはかなり標準的なものだと思いましたが、Oracleがこれをサポートしていると確信しています。MySQLに強制的に「WITH」節を使用させる方法はありますか?MyISAMとinnoDBエンジンで試してみました。これらはどちらも機能しません。

2
単一のSELECTステートメントに複数の共通テーブル式を含めるにはどうすればよいですか?
私は複雑なselectステートメントを簡略化している最中なので、共通のテーブル式を使用すると思いました。 単一のcteを宣言しても問題ありません。 WITH cte1 AS ( SELECT * from cdr.Location ) select * from cte1 同じSELECTで複数のcteを宣言して使用することは可能ですか? つまり、このSQLはエラーを出します WITH cte1 as ( SELECT * from cdr.Location ) WITH cte2 as ( SELECT * from cdr.Location ) select * from cte1 union select * from cte2 エラーは Msg 156, Level 15, State …

4
Postgresを使用して一度に3つのテーブルにデータを挿入します
1つのクエリで3つのテーブルにデータを挿入したいと思います。 私のテーブルは以下のようになります: CREATE TABLE sample ( id bigserial PRIMARY KEY, lastname varchar(20), firstname varchar(20) ); CREATE TABLE sample1( user_id bigserial PRIMARY KEY, sample_id bigint REFERENCES sample, adddetails varchar(20) ); CREATE TABLE sample2( id bigserial PRIMARY KEY, user_id bigint REFERENCES sample1, value varchar(10) ); 挿入するたびにキーを取得し、そのキーを次のテーブルに挿入する必要があります。 私の質問は: insert into sample(firstname,lastname) values('fai55','shaggk') RETURNING …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.