X



トップページDB@2ch掲示板
1002コメント294KB
SQL初心者質問スレ [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001NAME IS NULL
垢版 |
2016/05/12(木) 05:29:07.61ID:HmbS4CfD
SQL初心者用の質問スレッドです。
0039NAME IS NULL
垢版 |
2016/08/22(月) 10:41:57.37ID:???
ちょっと見ただけですけど
recordテーブルを追加するのではなく、
walletテーブルに max_goldという項目を追加すれば良いのでは?
0040NAME IS NULL
垢版 |
2016/08/22(月) 10:57:44.22ID:???
user_idごとに1件しか無いのにidが別にあることとかいろいろ気になるけど
まあなんか書いてない理由があるんだろう、、、

どうしても最新状態保つなら単にトリガ書くだけのが早そうだが
0041NAME IS NULL
垢版 |
2016/08/22(月) 13:08:23.88ID:nVybO4PH
>>38
正直に言ってくそSQLだわ。

他人があとでみたら、こいつ殺すと思われるレベル。
0042NAME IS NULL
垢版 |
2016/08/22(月) 13:40:23.90ID:???
初心者スレなんだからぼろくそに言うのではなく改善案を提示しないと
0043NAME IS NULL
垢版 |
2016/08/22(月) 13:59:03.07ID:???
これは更新が1回でも失敗したらもう最大値が出せなくなるじゃん
0044NAME IS NULL
垢版 |
2016/08/22(月) 18:58:47.51ID:???
>>34
walletに時系列データはないのか?
ないと実現出来ないのではないか?
004532
垢版 |
2016/08/22(月) 20:10:31.73ID:???
だめなSQLのようですね
どこが悪いのかがわからないのでどう改善していいのかもわかりません
具体的に指摘してもらえると助かります
SQL難しいですね

>>39
recordにはユーザーの最大ゴールド以外にもいろいろな記録を持たせようと思っています

>>44
時系列データはありません
0046NAME IS NULL
垢版 |
2016/08/22(月) 22:48:38.43ID:???
開始の残高ファイルと更新データがあれば累計関数使って累計残高viewを作ってその最大値で更新したほうがいいと思う
mysqlでは下記リンク先参照
http://pct.unifas.net/mysql/3712
0047NAME IS NULL
垢版 |
2016/08/22(月) 23:24:46.87ID:nVybO4PH
>>45
疑問なのは、UPDATE文ひとつでやらないと本当にいけないの?

こういう状況がわからない。
0048NAME IS NULL
垢版 |
2016/08/23(火) 03:22:31.82ID:???
>>38のSQLでは、実行時のwalletの値が最大値だったときしか更新されないぞ
履歴保持してないのに全ユーザ一括は無理(全ユーザのwallet更新タイミングが同じでない限り)

walletが時系列や履歴を持たずに、現在値しか保持してないなら
walletの更新時にrecordを更新しないとダメ

で、普通のDBMSなら、こういうのはwalletにトリガ張ってやる
walletを更新するストアドプロシジャ作ってそれでチェックするって方法もあるけど
004932
垢版 |
2016/08/23(火) 12:32:35.01ID:???
>>47
どういうサイトなのかを説明すべきでしたすみません
ざっくり言うと競馬のようなサイトをやっています
レース終了後に払い戻しとして的中した全ユーザーのwalletのgoldを
ユーザーが賭けた額×オッズ分プラスします
この払い戻しのタイミングでmax_goldを更新したいと思い>>38のようなSQLを考えました
goldが増えるタイミングは払い戻し時のみです

>>48
トリガ、ストアドプロシジャを初めて知りました
調べてみようと思います。ありがとうございます
0050NAME IS NULL
垢版 |
2016/08/23(火) 12:41:04.01ID:???
>>40 でトリガって書いてるのになw
0051NAME IS NULL
垢版 |
2016/08/23(火) 12:42:04.90ID:???
どっちにしてもストアドもトリガも知らないくらいの初心者がDB設計して使い物になるとは思えない
SQL以前にDB設計じゃねえの
0052NAME IS NULL
垢版 |
2016/08/23(火) 12:55:29.40ID:???
>>51
> どっちにしてもストアドもトリガも知らないくらいの初心者がDB設計して使い物になるとは思えない
と思ってるような奴の方が使い物になるとは思えんな
005332
垢版 |
2016/08/23(火) 13:06:07.75ID:???
データベースの勉強をおろそかにしてORMに頼ってたツケが回って来た感があります
データベースについて基本からしっかり勉強し直したいのですが
おすすめの本やサイトを教えていただけないでしょうか
0054NAME IS NULL
垢版 |
2016/08/23(火) 14:43:56.01ID:???
>>53
amazonでデータベースで検索し、設計関連の評判の良いものを5冊買え
0055NAME IS NULL
垢版 |
2016/09/01(木) 16:46:33.47ID:???
SQLっていうか、DBそのものに関する質問になってしまうんですが。。。

データベースに同じUserID、同じパスワードで複数ログイン出来るってのは一旦資格を与えられたユーザーに
ついてはその権限の範囲なら信用するってことなんですかね。
0056NAME IS NULL
垢版 |
2016/09/01(木) 17:48:15.50ID:???
1ユーザ1コネクションの制限を設けたとしたら、マルチプロセスやマルチスレッドなクライアントが任意のタイミングでコネクションを生成するのに苦労するよ。
005755
垢版 |
2016/09/01(木) 18:40:00.10ID:???
そちらの方のプログラミングには疎いんですが、とにかくそういう制限があるとまずいってわけなんですね。^^;
例えば一般ユーザーに開放しているデータベースがあるとして、そこにアクセスするユーザーにいちいちidとパスワード、権限を
与えるのも大変だなとは思ったんですが。
0058NAME IS NULL
垢版 |
2016/09/01(木) 19:02:23.73ID:???
何に関しては疎くないの?
0061NAME IS NULL
垢版 |
2016/09/01(木) 22:57:57.54ID:???
>>57
なんかいろいろ勘違いしてる
0062NAME IS NULL
垢版 |
2016/09/02(金) 02:24:24.57ID:RT8+OUHE
>>57
RDBMSでもOSでも1ユーザー、1セッションというものの方が珍しい。
0063NAME IS NULL
垢版 |
2016/09/02(金) 02:39:07.81ID:???
まあRDBMSによって「ユーザー」というものの定義は異なるけどな
0064NAME IS NULL
垢版 |
2016/09/04(日) 21:42:59.71ID:???
トランザクションとかの話?
0065NAME IS NULL
垢版 |
2016/09/04(日) 21:58:50.03ID:???
ユーザ用(id,パスワード)のテーブルがあった方がいいと思うけど
0066NAME IS NULL
垢版 |
2016/09/04(日) 22:33:29.15ID:???
>>57
>例えば一般ユーザーに開放しているデータベースがあるとして、
>そこにアクセスするユーザーにいちいちidとパスワード、権限を
>与えるのも大変だなとは思ったんですが。

一般ユーザーに直接データベースを操作させることは普通しないと思う。

そうではなく、データベースを利用するシステムが、利用ユーザーに提供する
業務用アカウントの話じゃないのかな?
0067NAME IS NULL
垢版 |
2016/09/04(日) 22:40:44.03ID:???
ユーザ用って書き方がおかしかった
ユーザを管理するテーブル
0068NAME IS NULL
垢版 |
2016/09/05(月) 16:09:42.99ID:???
最初にテーブルを作成したら、新しいテーブルは必要ないシステムを作っています
この場合、テーブル構造をどう保存するのが正しいやり方ですか?
とりあえずcreate文を保存しています
0070NAME IS NULL
垢版 |
2016/09/05(月) 16:46:05.98ID:???
DBのツールでスキーマ保存すると結局CREATE文だけってのもあるしな
0072NAME IS NULL
垢版 |
2016/09/16(金) 14:02:36.57ID:???
例えば名簿のtableがあって、
id name address
という三つのカラムがあります。
idは重複しない番号です。
この時 id で order by して、
idが1000番台の人の最初の100人取り出す。
idが2000番台の人の最初の100人取り出す。
みたいな処理を連続で行う場合、毎回 order by するのは効率悪いと思うのですが、
何か良い方法はありますか?
MySQLです。
0074NAME IS NULL
垢版 |
2016/09/16(金) 15:37:16.31ID:???
>>72
> みたいな処理を連続で行う場合、毎回 order by するのは効率悪いと思うのですが、
indexが使われるなら効率は悪くない
0075NAME IS NULL
垢版 |
2016/09/16(金) 15:46:47.88ID:???
>>73>>74
すみません、初心者なのでもう少しヒント下さい。
よく理解できません。
0076NAME IS NULL
垢版 |
2016/09/16(金) 15:50:26.47ID:???
>>75
select * from 名簿 where id >= 1000 order by id limit 100;
とかするんだろうけど、idにindexが付けられてるなら効率は悪くない
これでわからないのならお手上げ
0077NAME IS NULL
垢版 |
2016/09/16(金) 15:57:39.07ID:???
処理が必ず1000番台ごとにするなら
もう一つ項目daiを追加して、indexを張っておき
id 1000〜1999 には 1 をセット
id 2000〜2999 には 2 をセット
id 3000〜3999 には 3 をセット
というのは?
select * from 名簿 where dai=1 order by id limit 100;
0079NAME IS NULL
垢版 |
2016/09/16(金) 17:12:26.30ID:???
>>75
select *
from 名簿
where
id between 1 and 100 or
id between 1000 and 1100 or
id between 2000 and 2100
0080NAME IS NULL
垢版 |
2016/09/16(金) 17:17:10.22ID:???
>>78
そんなのDBMSとオプティマイザの判断次第
カーディナリが十分高ければ、daiのインデックスは使われる可能性が高いだろ

元質問はMySQL指定か。MySQLのオプティマイザでは絶対使わんっていう話なら知らん
0081NAME IS NULL
垢版 |
2016/09/16(金) 17:19:10.66ID:???
>>78
idに抜け番がないとはどこにも書いてないけどな
0082NAME IS NULL
垢版 |
2016/09/16(金) 17:39:29.68ID:???
>>80
MySQLのこと知らんなら黙っとけよ
0084NAME IS NULL
垢版 |
2016/09/16(金) 18:05:34.85ID:???
mysqlはクソだからしかたがない。
0086NAME IS NULL
垢版 |
2016/09/16(金) 18:25:35.23ID:???
そういや、mysqlではsub queryが劇遅だってのは直ったの?
0087NAME IS NULL
垢版 |
2016/09/16(金) 21:39:39.26ID:???
>>80
daiのカーディナリティも十分に大きければそのインデックスも使われるだろうけど、
常にそれよりカーディナリティが大きいidのインデックスを使った方がいいに決まってる。
それにそもそもidでソートするわけだし。
0088NAME IS NULL
垢版 |
2016/09/17(土) 02:16:52.23ID:???
ありがとうございました
indexを試してみます
0089NAME IS NULL
垢版 |
2016/09/22(木) 11:38:01.04ID:???
SELECT * FROM table
WHERE ...
 AND ...
 AND ...
 AND ...
のようにAND条件をズラズラ並べる場合、
その条件を並べる順番で処理速度は変わりますか?
0090NAME IS NULL
垢版 |
2016/09/22(木) 12:44:02.41ID:???
長文失礼します。
mysqlで
article_infoテーブルに title(記事タイトル),url(記事のurl)を持っています。
blog_infoテーブルには blog_title(ブログのタイトル),blog_url(ブログのtopのurl)を持っています。

やりたいこと:
article_infoで取得した記事のブログのタイトルを一緒に取得したい。
article_info.url は、,blog_urlのレコードのどれかを含んでいます。
例:
blog_title:サンプルブログ
blog_url:http://sample.com/
article_info.url:http://sample.com/article/001


   
のようになっているので、もし取得したurlがblog_urlに含んでいた場合、対応するblog_titleを共に表示したいと考えています。
009190
垢版 |
2016/09/22(木) 13:24:14.82ID:???
ちなみに
SUBSTRING(url,1,LOCATE('/',url,8))  でblog_urlのどれかとマッチするurlが作れることがわかりました。
0092NAME IS NULL
垢版 |
2016/09/22(木) 13:32:19.51ID:???
>>89
普通は検索方法はオプティマイザが判断するから関係ない

定義順に条件書かれてないと複合インデックスが使用できないDBMSがあるとかいう噂は昔聞いたことある
その場合は複合インデックスの定義順に並べるほうが早い可能性が高い

オプティマイザが貧弱で検索順を入れ替えられないDBMSも聞いたことがある
その場合はカーディナルの高い順に検索条件並べろと教えられたことはある
単一テーブルの単純な検索なら、最悪でもそのテーブルのフルスキャン1回ですむから
まあどうでもいいと思うが
009390
垢版 |
2016/09/22(木) 13:33:17.23ID:???
すみません。下記のかんたんなsqlで取得できました。お騒がせしました。
select
a.title,
a.url,
b.blog_title
from
article_info a,blog_info b
0094NAME IS NULL
垢版 |
2016/09/22(木) 20:16:59.13ID:???
>>92
詳しい説明ありがとうございました。
MySQLです。
念のために順番を考慮してAND条件を書いてみます。
0095NAME IS NULL
垢版 |
2016/09/22(木) 23:39:21.90ID:???
>>93
fromでカンマで繋げるのは
INNER JOINの省略形な
0097NAME IS NULL
垢版 |
2016/09/22(木) 23:53:56.92ID:???
ふつう直積(CROSS JOIN)だと思うんだが、>>93読んであれ?と思った。
MySQLってそうなのか?
0098NAME IS NULL
垢版 |
2016/09/23(金) 00:03:00.24ID:???
whereでなんかしてなければ直積だな
009993
垢版 |
2016/09/23(金) 02:59:28.95ID:???
すいません、できたと思ってたけどできてませんでした。
しょうがないのでarticle_infoとblog_infoにblog_idカラムを追加して
Inner join で持ってきました。
0100NAME IS NULL
垢版 |
2016/09/24(土) 09:51:02.05ID:UI+2ILvZ
教えて下さい。
インサートしたカラムに不要な文字[:]がついてしまったのですが、
replaceで毎回取り除いてるとクエリが遅くなるので、すべて更新したいのですが、
update文で出来ますか?
0101100
垢版 |
2016/09/24(土) 09:57:30.44ID:UI+2ILvZ
できました。忘れてください。
0102NAME IS NULL
垢版 |
2016/10/05(水) 22:12:12.17ID:???
mysqlで質問です。
ng_wordテーブルがあります。
テーブルには、wordカラムにキーワードが登録されています。

main_textテーブルのtextカラムの中には
テキストの文章が入っています。

もしmain_textの中にng_wordのwordが含まれていたら、取得したくないのですが、
ロジックを挟まず、sqlだけで取得できますか?
0103NAME IS NULL
垢版 |
2016/10/05(水) 22:26:56.73ID:???
WHERE main_text NOT LIKE '%word%' じゃだめだったか?
0104102
垢版 |
2016/10/05(水) 22:40:45.63ID:???
>>103
ワードが1つならそれでも良いかもしれませんが、
複数あるので…
0105NAME IS NULL
垢版 |
2016/10/06(木) 00:04:56.18ID:???
このスレ、SQL文書こうとするとエラーになる
どうしたもんかな・・・
0106NAME IS NULL
垢版 |
2016/10/06(木) 00:19:48.71ID:???
Sorry, you have been blocked
You are unable to access 2ch.net

There are several actions that could trigger this block including submitting
a certain word or phrase, a SQL command or malformed data.

SQL文を投稿しようとすると、ハッキング行為とみなされるみたい
0108NAME IS NULL
垢版 |
2016/10/06(木) 18:36:58.34ID:???
不便になったもんだな
0109NAME IS NULL
垢版 |
2016/10/16(日) 17:07:47.24ID:9/d7j9zT
>>106
まあSQLインジェクション対策なんだろうけどな。
0110NAME IS NULL
垢版 |
2016/10/16(日) 17:11:39.20ID:53yW0F3M
>>107
前の書き込みをよく見ていないけど、テーブルの結合条件もなければ、カラムのテーブル名修飾もなくてわからない。

テーブル間の関係を説明してくれ。

そもそも初めに書いたようにSQLの書き方そのものが悪い。
0111NAME IS NULL
垢版 |
2016/10/16(日) 19:59:14.27ID:???
>>102 に書いてあるだろうに、何が分からないのか分からない
0112NAME IS NULL
垢版 |
2016/10/16(日) 23:41:51.01ID:yy6enVq7
兄弟関係の抽出 と LIMIT、OFFSETに代わるもの (マルチ)

OS: Windows 10 Pro
Access Version: 2016 (2010も使用)
VBA:Excel,Powerpointのみ
VBAでの回答:否
検索キーワード:access SQL 件数 指定


http://www.accessclub.jp/bbs2/0051/beginter16860.html
「No16860.SQLで件数を指定する方法」

SELECT [電話番号] FROM [T_児童マスタ] GROUP BY [電話番号] HAVING Count(*)>1

上記2つ等を元に、次のテーブルに適応させようとしていますが、
スマートな文、クエリ(または他の手法)が思いつきません。
どうかアドバイスをお願いいたします。


T_児童マスタ

学級 氏名 電話番号
11  A  1111-11-1111
21  B 2222-22-2222
31  C 1111-11-1111
41  D 2222-22-2222
51  E 1111-11-1111
61  F 3333-33-3333



望む出力結果

学級 氏名 電話番号    兄弟学級1 兄弟氏名1 兄弟学級2 兄弟氏名2 兄弟学級3 兄弟氏名3
11  A  1111-11-1111  31     C     51     E     
21  B 2222-22-2222  41     E
31  C 1111-11-1111  11     A     51     E
41  D 2222-22-2222  21     B
51  E 1111-11-1111  11     A     31     C
61  F 3333-33-3333
0113NAME IS NULL
垢版 |
2016/10/17(月) 01:58:23.01ID:ee1NFGBS
>>102
直積で結合して、textとwordを引数にとる文字列検索関数があれば、それをWHERE句の絞り込み条件にすればできるな。
0114NAME IS NULL
垢版 |
2016/10/17(月) 07:12:12.69ID:???
>>112
兄弟の数は可変なの?
2固定なら普通にjoinすればいい
0116NAME IS NULL
垢版 |
2016/10/17(月) 07:25:17.32ID:???
堂々とマルチと宣言すれば文句言われない!キリッ
0117NAME IS NULL
垢版 |
2016/10/17(月) 07:35:53.31ID:w90R1vLK
>>112
こんな感じでいいと思う
SELECT
MM.学級 
,MM.氏名 
,MM.電話番号
,S1.学級 AS 兄弟学級1
,S1.名前 AS 兄弟氏名1
,S2.学級 AS 兄弟学級2
,S2.名前 AS 兄弟氏名2
,S3.学級 AS 兄弟学級3,
S3.名前 AS 兄弟氏名3
FROM T_児童マスタ AS MM
LEFT JOIN T_児童マスタ AS S1
on S1.電話番号 = MM.電話番号
and S1.学級 <> MM.学級
LEFT JOIN T_児童マスタ AS S2
on S2.電話番号 = MM.電話番号
and S2.学級 <> MM.学級
and S2.学級 <> S1.学級
LEFT JOIN T_児童マスタ AS S3
on S3.電話番号 = MM.電話番号
and S3.学級 <> MM.学級
and S3.学級 <> S1.学級
and S3.学級 <> S2.学級
WHERE nz(S1.学級,999) <= nz(S2.学級,999)
and nz(S2.学級,999) <= nz(S3.学級,999)
0119NAME IS NULL
垢版 |
2016/10/17(月) 18:24:29.94ID:3tZ2amHg
>>117
ありがとうございます。
これから試してみます。
0120NAME IS NULL
垢版 |
2016/10/17(月) 19:50:25.76ID:3tZ2amHg
>>117
少し拡張してみたところ「演算子がありません」とのエラーが
出てしまいます。かなり初歩的な質問になってしまいますが、
問題点をお教えください。宜しくお願いします。


SELECT MM.ID, MM.入学年度, MM.学年, MM.[クラス], MM.[クラス内番号],
MM.姓, MM.名, MM.[せい], MM.[めい],
MM.性別, MM.生年月日, MM.電話番号,
MM.市区町村, MM.町域,MM.番地, MM.号, MM.建物名, MM.郵便番号,
MM.地区・常会, MM.下校コース,
MM.父名, MM.父連絡先, MM.父連絡先電話番号,
MM.母名, MM.母連絡先, MM.母連絡先電話番号,
MM.緊急連絡先1, MM.緊急連絡先2, MM.緊急連絡先3,
S1.学年 AS 在学兄弟姉妹クラス1, S1.名 AS 在学兄弟姉妹名1,
S2.学年 AS 在学兄弟姉妹クラス2, S2.名 AS 在学兄弟姉妹名2,
S3.学年 AS 在学兄弟姉妹クラス3, S3.名 AS 在学兄弟姉妹名3,
MM.PTA役員, MM.備考, MM.除籍
FROM T_児童マスタ AS MM
LEFT JOIN T_児童マスタ AS S1
ON S1.電話番号 = MM.電話番号  ←ここ
AND S1.学年 <> MM.学年     ←ここ
LEFT JOIN T_児童マスタ AS S2
ON S2.電話番号 = MM.電話番号
AND S2.学年 <> MM.学年
AND S2.学年 <> S1.学年
LEFT JOIN T_児童マスタ AS S3
ON S3.電話番号 = MM.電話番号
AND S3.学年 <> MM.学年
AND S3.学年 <> S1.学年
AND S3.学年 <> S2.学年
;
0121NAME IS NULL
垢版 |
2016/10/17(月) 20:30:12.67ID:3tZ2amHg
>>112 >>117 >>120
こんな感じにしてみましたが、
今度は「JOIN式はサポートされていません。」
と出てしまいます。

SELECT MM.ID, MM.入学年度, MM.学年, MM.[クラス], MM.[クラス内番号],
MM.姓, MM.名, MM.[せい], MM.[めい],
MM.性別, MM.生年月日, MM.電話番号,
MM.市区町村, MM.町域,MM.番地, MM.号, MM.建物名, MM.郵便番号,
MM.地区・常会, MM.下校コース,
MM.父名, MM.父連絡先, MM.父連絡先電話番号,
MM.母名, MM.母連絡先, MM.母連絡先電話番号,
MM.緊急連絡先1, MM.緊急連絡先2, MM.緊急連絡先3,
S1.学年 AS 在学兄弟姉妹クラス1, S1.名 AS 在学兄弟姉妹名1,
S2.学年 AS 在学兄弟姉妹クラス2, S2.名 AS 在学兄弟姉妹名2,
S3.学年 AS 在学兄弟姉妹クラス3, S3.名 AS 在学兄弟姉妹名3,
MM.PTA役員, MM.備考, MM.除籍
FROM
(
(
T_児童マスタ AS MM
LEFT JOIN T_児童マスタ AS S1
ON S1.電話番号 = MM.電話番号
AND S1.学年 <> MM.学年
)
LEFT JOIN T_児童マスタ AS S2
ON S2.電話番号 = MM.電話番号
AND S2.学年 <> MM.学年
AND S2.学年 <> S1.学年
)
LEFT JOIN T_児童マスタ AS S3
ON S3.電話番号 = MM.電話番号
AND S3.学年 <> MM.学年
AND S3.学年 <> S1.学年
AND S3.学年 <> S2.学年
;
0122NAME IS NULL
垢版 |
2016/10/18(火) 00:34:12.50ID:???
>>121
accessでは一つのクエリではできないみたい
サブクエリ作って3段重ねで繋げてみて
0123NAME IS NULL
垢版 |
2016/10/18(火) 03:32:30.90ID:???
重複行を見付けたら一行のみ残して他を削除したいのですが、
列名などを指定せずに、
DeleteDuplicateRow テーブル名
みたいなコマンドは無いのでしょうか?
キーは有りません。
0124NAME IS NULL
垢版 |
2016/10/18(火) 11:21:45.19ID:???
その残す1行の指定はどうやって決まる?
基本的にSELECTできるものは消せる
0125NAME IS NULL
垢版 |
2016/10/18(火) 11:44:05.07ID:???
>>124
重複しているので、どれを消しても良いと思うのですが。
0126NAME IS NULL
垢版 |
2016/10/18(火) 11:49:15.77ID:???
重複って言うのは、特定のフィールドだけじゃなく
(プライマリーキー以外)全てのフィールドが同じ値になるレコード
って意味で良いのかな?
0127NAME IS NULL
垢版 |
2016/10/18(火) 11:52:11.08ID:???
>>126
そうです。
プライマリキーも設定していません。
0128NAME IS NULL
垢版 |
2016/10/18(火) 12:29:42.88ID:???
>>127
a
a
a
これを一行残して消すとか無理だろ
0131NAME IS NULL
垢版 |
2016/10/18(火) 12:36:59.34ID:???
>>128
sqlserver ならrownumber関数使えばできる
0132NAME IS NULL
垢版 |
2016/10/18(火) 12:39:09.00ID:???
>131
とりあえずMySQLです。SQL SERVERでもやりたいです。
0133NAME IS NULL
垢版 |
2016/10/18(火) 14:01:40.70ID:???
>>132
やはり他の同じ値になるレコードと区別するために
一意のカラムをつけないと削除は無理だと思います
あるいは、>>129さんのやり方でテーブル全体を作り直すのが簡単
0134NAME IS NULL
垢版 |
2016/10/18(火) 15:17:32.19ID:???
一意になるフィールドがあれば(例えばプライマリキーがあれば)、
プライマリキー以外のフィールドでグループ化し、
その上で、一番小さなプライマリキー値のリストを取得、
そのキーリスト以外の全レコードを削除、って感じでできます。
0135NAME IS NULL
垢版 |
2016/10/18(火) 17:24:15.67ID:???
RDBMSで全く同じレコードは扱うの大変だし意味ないので今後のためにキー追加するか
重複したものは登録できないようにしたほうが良さげ
0136NAME IS NULL
垢版 |
2016/10/19(水) 01:24:02.04ID:wlxzgloU
皆さん、いろいろアドバイスありがとうございました。
134さんの方式を試してみます。
重複する行を除去するような操作は普通はやらないのですか?
0137NAME IS NULL
垢版 |
2016/10/19(水) 06:20:22.91ID:???
だからその重複させるような事態そのものを発生させないようにしてるんだってば
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況