タグ付けされた質問 「select」

コアSQLステートメントであるSELECTは、1つ以上のテーブル、またはビューやテーブル値関数などの行セットデータの他のソースからデータを取得します。

4
2つのテーブルを結合して、2番目のテーブルの行を取得する方法
単純な投票システムでは CREATE TABLE elections ( election_id int(11) NOT NULL AUTO_INCREMENT, title varchar(255), CREATE TABLE votes ( election_id int(11), user_id int(11), FOREIGN KEYs ユーザーが投票した選挙のリストを取得するには、次のJOINが使用されます SELECT * FROM elections JOIN votes USING(election_id) WHERE votes.user_id='x' しかし、ユーザーが投票していない選挙のリストを取得する方法は?
21 join  select 

1
MySQLはテーブル内の各レコードの別のテーブルから行をカウントします
SELECT student.StudentID, student.`Name`, COUNT(attendance.AttendanceID) AS Total FROM student LEFT JOIN attendance ON student.StudentID = attendance.StudentID 私は最後の行を数えようとしていますが、代わりにすべての結果を数え、1つの結果を返します 私は次のようなものを得ています K1052280の出席IDに2つのエントリがあるため、複数のレコードがあるため、それらをカウントして番号を返します。何かのようなもの
19 mysql  select  count 

2
サブクエリを介して複数の列を選択する
次のクエリのサブクエリから2列を選択しようとしていますが、選択できません。エイリアステーブルを作成しようとしましたが、まだ取得できませんでした。 SELECT DISTINCT petid, userid, (SELECT MAX(comDate) FROM comments WHERE petid=pet.id) AS lastComDate, (SELECT userid FROM comments WHERE petid=pet.id ORDER BY id DESC LIMIT 1) AS lastPosterID FROM pet LEFT JOIN comments ON pet.id = comments.petid WHERE userid='ABC' AND deviceID!='ABC' AND comDate>=DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 2 MONTH); 基本的に、私は同じ行からlastComDate&を取得しようとしていますlastPosterID-特定のペットのコメントの最新の行です。効率的な方法でそれらを取得する方法を提案してください。 上記のクエリは機能しますが、同じ行が2回フェッチされるため、過剰に思えます。さらに、ORDER BYクエリのプロファイリング中に見つけたように、句は集計関数よりもかなり遅くなります。そのため、ソートを回避するソリューションが必要です。

4
1回の選択で現在の値と次に大きい値を取得するにはどうすればよいですか?
InnoDBテーブル 'idtimes'(MySQL 5.0.22-log)に列があります `id` int(11) NOT NULL, `time` int(20) NOT NULL, [...] 複合一意キー UNIQUE KEY `id_time` (`id`,`time`) そのため、IDごとに複数のタイムスタンプがあり、タイムスタンプごとに複数のIDがあります。 私はすべてのエントリに加えて、存在する場合は各エントリの次の大きな時間を取得するクエリを設定しようとしているので、たとえば次のように返されます: +-----+------------+------------+ | id | time | nexttime | +-----+------------+------------+ | 155 | 1300000000 | 1311111111 | | 155 | 1311111111 | 1322222222 | | 155 | 1322222222 | NULL | | …
18 mysql  innodb  select 

1
「どこ」でアクセントを無視する
データベースには、caron / hatschekを使用した複数のエントリがあります。現在、ユーザーは、なしでエントリを検索するときに、caron / hatschekを含むエントリを検索したいと考えています。これを簡単な例で示します。 データベースにエントリがあります(名前の連絡先) Millière この名前はその人が住んでいる国で正しいです 私たちの国では、caron / hatschekの文字はないため、ユーザーはを検索しMilliereます。è明らかに一致しないため、結果は表示されませんe。 私は、これはとして実現することができるか見当がつかないé、è、êその多くは、より利用可能です(これは手紙のための唯一の例ですe...)。 (文字列をすべてcaron / hatschekで基本文字列に置き換えるだけでよいので、他の方法ははるかに簡単です。明らかに、ユーザーは、障害のある名前ではなく、データベースの名前の正しいバージョンを望んでいます。)

1
インデックス列の非常に大きなテーブルからのSELECT TOP 1は非常に遅いですが、逆順ではありません(「desc」)
強力なサーバーでSQL Server 2014を実行している約1 TBの大規模データベースがあります。数年はすべてうまくいきました。約2週間前に、次のような完全なメンテナンスを行いました。すべてのソフトウェアアップデートをインストールします。すべてのインデックスを再構築し、DBファイルを圧縮します。ただし、実際の負荷が同じ場合、特定の段階でDBのCPU使用率が100%から150%増加するとは予想していませんでした。 多くのトラブルシューティングを行った後、非常に単純なクエリに絞り込みましたが、解決策が見つかりませんでした。クエリは非常に簡単です。 select top 1 EventID from EventLog with (nolock) order by EventID 常に約1.5秒かかります!ただし、「desc」を使用した同様のクエリには常に約0ミリ秒かかります。 select top 1 EventID from EventLog with (nolock) order by EventID desc PTableには約5億行があります。データ型がbigint(Identity列)EventIDのプライマリクラスター化インデックス列(ordered ASC)です。上部のテーブルにデータを挿入する複数のスレッド(より大きなEventID)があり、下部からデータを削除する1つのスレッド(より小さなEventID)があります。 SMSSでは、2つのクエリが常に同じ実行プランを使用することを確認しました。 クラスター化インデックススキャン。 推定および実際の行番号は両方とも1です。 推定および実際の実行回数は両方とも1です。 推定I / Oコストは8500です(高いようです) 連続して実行した場合、クエリコストは両方で同じ50%です。 インデックス統計を更新しましたがwith fullscan、問題は続きました。インデックスを再構築しましたが、問題は半日消えたようですが、戻ってきました。 IO統計をオンにしました: set statistics io on 次に、2つのクエリを連続して実行し、次の情報を見つけました。 (最初のクエリについては、遅いクエリ) テーブル「PTable」。スキャンカウント1、論理読み取り407670、物理読み取り0、先読み読み取り0、lob論理読み取り0、lob物理読み取り0、lob先読み読み取り0。 (2番目のクエリ、高速クエリの場合) …

2
WITHを使用した複数の操作
使用して複数の操作を実行する方法があるWITH文は? 何かのようなもの WITH T AS ( SELECT * FROM Tbl ) BEGIN OPEN P_OUTCURSOR FOR SELECT * FROM T; SELECT COUNT(*) INTO P_OUTCOUNT FROM T; END; データとそのカウントを選択したい...
16 oracle  select  cte 

4
再帰的自己結合
私はcommentsこれを単純化できるテーブルを持っています: comments ======= id user_id text parent_id where parent_idはnull入力可能ですが、親コメントのキーになる場合があります。 さて、select特定のコメントのすべての子孫はどうすればいいですか? コメントはいくつかのレベル下にあるかもしれません...

3
デュアルテーブルから選択する必要があるのはなぜですか?
これは、StackOverflow / dba.stackexchange(SQL Server、MySQL、PostgreSQL、SQLite(WebSQL)など)に表示される可能性が高い主要な関係データベース管理システムで機能します。 select 'abc' abc, 1 def; Oracleでは機能しません。OracleのDUALから選択する必要があるのはなぜですか?SQLのISO / ANSI標準では、SELECTステートメントにFROM句が必要ですか? 編集: Per Bacon Bitの答えによれば、SQL標準では必須のようです。 名前DUALは、このような誤った名称であるので、私は例えば、テーブルを作成し、ATOMまたはONEという名前をしていたのであれば、現実には、create table one (atom int);... select 'abc' abc, 1 def FROM one;-パフォーマンスの低下はに比べてありますかSELECT .. FROM DUAL?
15 oracle  select 

2
SQLクエリ(またはビュー定義)で「投影」という用語は何を指しますか
Oracleのドキュメントではザ・クエリオプティマイザ、下のビューのマージ、私は次のような情報を見つけました ビューのマージの最適化は、選択、投影、および結合のみを含むビューに適用されます。つまり、マージ可能なビューには、集合演算子、集計関数、DISTINCT、GROUP BY、CONNECT BYなどが含まれていません。 (エンファシス鉱山) しかし、私はそのような投影が実際に何を指しているのか推測することしかできません。
15 oracle  select 

4
ゼロ行が一致する場合でも、SELECTが定数値を返すようにする
次の選択ステートメントを検討してください。 SELECT *, 1 AS query_id FROM players WHERE username='foobar'; プレーヤーの他の列query_idとともに値を1持つ列を返します。 selectが一致する行を検出しなかった場合でも、上記のSQLに少なくともquery_idofを返させるにはどう1すればよいですか? ところで、それはPostgreSQL 8.4です。

2
サブクエリからの行のカウント
シンプル:サブクエリの行数をカウントしたいと思います。ステータスは、ホストがオンラインかどうかに注意してください。 悪いコード SELECT COUNT(ip_address) FROM `ports` ( SELECT DISTINCT ip_address FROM `ports` WHERE status IS TRUE ) 説明しました 最初のクエリを単独で実行すると、次のように返されます。 SELECT DISTINCT ip_address FROM `ports` WHERE status IS TRUE ip_address 192.168.1.1 192.168.1.2 192.168.1.248 192.168.1.251 192.168.1.254 単独で実行される2番目のクエリはこれを返します。 SELECT COUNT(ip_address) FROM `ports` 17 質問 5つのIPアドレスのリストを数える方法を教えてください。 私はこの単純な問題の可能な解決策をオンラインで見ていて、ただイライラしているので、専門家に尋ねると思いました。

1
CREATE TABLE…AS SELECTの主キーの自動インクリメント
を介して複雑な選択クエリを使用してテーブルを作成しましたCREATE TABLE ... AS SELECT...。このクエリに自動インクリメントの主キーを追加するにはどうすればよいですか? 例えば: create table `user_mv` select `user`.`firstname` as `firstname`, `user`.`lastname` as `lastname`, `user`.`lang` as `lang`, `user`.`name` as `user_name`, `group`.`name` as `group_name` from `user` inner join `user_groups` on (`user`.`user_id`=`user_groups`.`user_id`) left join `group` on (`group`.`group_id`=`user_groups`.`group_id`) where `user`.`lang`=`group`.`lang` このクエリは、含まれているテーブルを作成しfirstname、lastname、lang、username、group_nameコラム。id自動インクリメントの主キーである列も必要です。 このクエリを変更してこれを行う方法はありますか?このクエリを実行した後にテーブルを変更することでそれができることはわかっていますが、create tableステートメントで直接これを行う方法がある場合は、その方法を知りたいです。

2
特定の列に異なる値または複数の値を持つレコードのみを選択します
以下は私のメンバーシップ表の例です。電子メールフィールドに複数の値を持ついくつかのレコードがあります。複数のメール値を持つレコードのみを選択します。 メンバー表 ID LASTNAME FIRSTNAME EMAIL 567 Jones Carol carolj@gmail.com 567 Jones Carol caroljones@aol.com 678 Black Ted tedblack@gmail.com 908 Roberts Cole coleroberts@gmail.com 908 Roberts Cole coler@aol.com 908 Roberts Cole colerobersc@hotmail.com 結果を希望します: 567 Jones Carol carolj@gmail.com 567 Jones Carol caroljones@aol.com 908 Roberts Cole coleroberts@gmail.com 908 Roberts Cole coler@aol.com 908 Roberts Cole …
11 select  count  distinct 

2
関連しない列は、selectステートメントのクエリ時間に影響しますか?
気になるだけです。 100万レコード/行のテーブルがあるとします。 select order_value from store.orders そのテーブルに実際のクエリ時間で1つのフィールド、2つのフィールド、または100のフィールドがあるかどうかに違いはありますか?「order_value」以外のすべてのフィールドを意味します。 現在、私はデータウェアハウスにデータをプッシュしています。「将来、いつか使用される可能性がある」フィールドをテーブルにダンプすることがありますが、現時点では、何も照会されていません。これらの「無関係な」フィールドは、それらを含まないselectステートメントに直接または間接的に影響しますか(いいえ*意味します)?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.