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

構造化照会言語(SQL)は、データベースを照会するための言語です。質問には、コード例、テーブル構造、サンプルデータ、使用するDBMS実装(MySQL、PostgreSQL、Oracle、MS SQL Server、IBM DB2など)のタグを含める必要があります。質問が特定のDBMSにのみ関連している場合(特定の拡張機能を使用)、代わりにそのDBMSのタグを使用してください。SQLでタグ付けされた質問への回答には、ISO / IEC標準SQLを使用する必要があります。

26
データベースの1対1の関係を使用することが理にかなっている時期はありますか?
先日、正規化について考えていましたが、データベースに1対1の関係があるはずがないと思いました。 Name:SSN?同じテーブルに入れます。 PersonID:AddressID?繰り返しますが、同じテーブルです。 1対多または多対多の適切な中間テーブルを使用して、膨大な数の例を思い付くことができますが、1対1になることはありません。 私は何か明白なものを見逃していますか?


6
Where句を使用した左結合
設定テーブルからすべてのデフォルト設定を取得する必要がありますが、x文字に存在する場合は文字設定も取得する必要があります。 ただし、このクエリは、文字が1である設定のみを取得します。ユーザーが誰も設定していない場合、デフォルト設定ではありません。 SELECT `settings`.*, `character_settings`.`value` FROM (`settings`) LEFT JOIN `character_settings` ON `character_settings`.`setting_id` = `settings`.`id` WHERE `character_settings`.`character_id` = '1' だから私はこのようなものが必要です: array( '0' => array('somekey' => 'keyname', 'value' => 'thevalue'), '1' => array('somekey2' => 'keyname2'), '2' => array('somekey3' => 'keyname3') ) ここで、キー1と2は、キー0に文字値を持つデフォルト値が含まれている場合のデフォルト値です。

6
MySQL CONCATは、いずれかのフィールドにNULLが含まれているとNULLを返します
テーブル「デバイス」に次のデータがあります affiliate_name affiliate_location model ip os_type os_version cs1 inter Dell 10.125.103.25 Linux Fedora cs2 inter Dell 10.125.103.26 Linux Fedora cs3 inter Dell 10.125.103.27 NULL NULL cs4 inter Dell 10.125.103.28 NULL NULL クエリの下で実行しました SELECT CONCAT(`affiliate_name`,'-',`model`,'-',`ip`,'-',`os_type`,'-',`os_version`) AS device_name FROM devices 以下の結果を返します cs1-Dell-10.125.103.25-Linux-Fedora cs2-Dell-10.125.103.26-Linux-Fedora (NULL) (NULL) NULLを無視し、結果が次のようになるようにする方法 cs1-Dell-10.125.103.25-Linux-Fedora cs2-Dell-10.125.103.26-Linux-Fedora cs3-Dell-10.125.103.27- cs4-Dell-10.125.103.28-
162 mysql  sql  null  concat 

15
SQL Serverで先行ゼロをトリミングするためのより良いテクニックは?
私はこれをしばらく使ってきました: SUBSTRING(str_col, PATINDEX('%[^0]%', str_col), LEN(str_col)) しかし最近、一致する「0」以外の文字が見つからないため、「00000000」などのすべての「0」文字を含む列に問題が見つかりました。 私が見た別のテクニックは使用することTRIMです: REPLACE(LTRIM(REPLACE(str_col, '0', ' ')), ' ', '0') 埋め込まれたスペースがある場合、スペースが「0」に戻されるとスペースが「0」に変わるため、これには問題があります。 私はスカラーUDFを回避しようとしています。SQL Server 2005では、UDFに関するパフォーマンスの問題がたくさん見つかりました。

15
SQL Serverでの制限10..20
私は次のようなことをやろうとしています: SELECT * FROM table LIMIT 10,20 または SELECT * FROM table LIMIT 10 OFFSET 10 SQL Serverを使用 私が見つけた唯一の解決策はやり過ぎのようです: SELECT * FROM ( SELECT *, ROW_NUMBER() OVER (ORDER BY name) as row FROM sys.databases ) a WHERE row > 5 and row <= 10 私も見つけました: SELECT TOP 10 * FROM …

4
SQL、Postgres OID、それらは何で、なぜ便利なのですか?
私はいくつかのPostgreSQLテーブルの作成を見ていますが、これに遭遇しました。 CREATE TABLE ( ... ) WITH ( OIDS = FALSE ); postgresが提供するドキュメントを読み、OOPからのオブジェクト識別子の概念を知っていますが、それでもわかりません。 なぜそのような識別子がデータベースで役立つのでしょうか? クエリを短くするには? いつ使用すべきですか?


4
IDが一致しないSQL行を別のテーブルから削除する
mysqlテーブルの孤立したエントリを削除しようとしています。 次のような2つのテーブルがあります。 テーブルfiles: | id | .... ------------ | 1 | .... | 2 | .... | 7 | .... | 9 | .... テーブルblob: | fileid | .... ------------ | 1 | .... | 2 | .... | 3 | .... | 4 | .... | 4 | .... …
160 sql  mysql 

13
PreparedStatementのSQLを取得するにはどうすればよいですか?
次のメソッドシグネチャを持つ一般的なJavaメソッドがあります。 private static ResultSet runSQLResultSet(String sql, Object... queryParams) これは、接続を開き、PreparedStatementsqlステートメントとqueryParams可変長配列のパラメーターを使用してを構築し、それを実行し、ResultSet(にCachedRowSetImpl)をキャッシュし、接続を閉じ、キャッシュされた結果セットを返します。 エラーをログに記録するメソッドに例外処理があります。デバッグに非常に役立つので、SQLステートメントをログの一部として記録します。私の問題は、String変数をsqlログに記録すると、テンプレートステートメントが実際の値ではなく?でログに記録されることです。実行された(または実行しようとした)実際のステートメントをログに記録したい。 だから...によって実行される実際のSQLステートメントを取得する方法はありますPreparedStatementか?(なければ、それを自分自身を構築する。私はアクセスする方法を見つけることができない場合PreparedStatement's、私はおそらく私の中でそれを自分自身を構築終わるだろう、SQLをcatchES。)

5
MySQLでフィールドがnullの場合は0を返します
MySQLでは、「合計」フィールドがNULLの場合にゼロに設定する方法はありますか? これが私が持っているものです: SELECT uo.order_id, uo.order_total, uo.order_status, (SELECT SUM(uop.price * uop.qty) FROM uc_order_products uop WHERE uo.order_id = uop.order_id ) AS products_subtotal, (SELECT SUM(upr.amount) FROM uc_payment_receipts upr WHERE uo.order_id = upr.order_id ) AS payment_received, (SELECT SUM(uoli.amount) FROM uc_order_line_items uoli WHERE uo.order_id = uoli.order_id ) AS line_item_subtotal FROM uc_orders uo WHERE uo.order_status NOT …
160 sql  mysql 

9
MySQL Workbench:接続を維持する方法
エラーコード:2013。クエリ中にMySQLサーバーへの接続が失われました MySQL Workbenchを使用しています。また、私は挿入のバッチを実行しています。合計で約1000行です(例:INSERT INTO mytable SELECT * FROM mysource1; INSERT INTO mytable SELECT * FROM mysource2;...mysource3...mysource41000回掛ける)。各バッチはかなりの時間を要し、そのうちのいくつかは600秒以上かかります。 接続を停止したり、接続を失うことなく、夜間に作業を続けるために、ワークベンチをどのように構成できますか?




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