![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
id,urlというテーブルにおいて、url中のファイル名が同じものを抜き出したい。
こんなテーブルがあります。
id url
1 http://okwave.jp/test/abc.wav
2 http://okokok.jp/456.jpg
3 http://okokok.jp/abc.wav
......続く
urlは必ずファイル名.拡張子で終わっています。
これらのURL中のファイル名.拡張子が同じもの(上のid1とid3などが例です)を抜き出して、
SELECT ファイル名,COUNT(同じだった数)
というふうに表示させたいのですが、どのようなSQLを組めばよいでしょうか?
PHPでも構いません。
ご教授願います。
No.3ベストアンサー
- 回答日時:
なんとも言えませんが、とりあえず中間テーブルのようなものを
つくって、indexを張る必要があるかもしれませんね。
create table hoge(id int NOT NULL,fname varchar(100),INDEX(id,fname));
insert into hoge select id,SUBSTRING_INDEX(url, '/',-1) FROM 元テーブル;
select fname,count(*) FROM hoge group by fname;
できました!
何分サーバーが古いもので、実行に10分もかかりましたが……
本当にありがとうございました。
大変お世話になりました!
No.2
- 回答日時:
すみません、曲解しました。
SUBSTRING_INDEX()を使えば簡単かもしれません。
SELECT SUBSTRING_INDEX(url, '/',-1) AS FNAME,COUNT(*) AS COUNT FROM test GROUP BY FNAME;
1つしかないものを除外するとか必要でしたらHAVINGをつかってください
おお!この関数は知りませんでした。便利です!
追加で申し訳ないのですが、実はさらに問題が在るのです。
レコード数が50万件程度ありまして…重いです。
いただいたSQL文の語尾に
SELECT SUBSTRING_INDEX(url, '/',-1) AS FNAME,COUNT(*) AS COUNT FROM test GROUP BY FNAME LIMIT 0,10000
としたところで、LIMITより後ろの文を全て実行したあとにLIMITをするわけですから、意味がありません。
一応試してみたところ、重すぎてサーバーごと吹っ飛んでしまいました。
なにか打開策はありますでしょうか?
No.1
- 回答日時:
拡張子を最初から分けておけばよいのでは?
無理やりするならこんな感じでも・・・
SELECT
if(substr(url, length(url) - 1,1)='.',substr(url, length(url) - 0),
if(substr(url, length(url) - 2,1)='.',substr(url, length(url) - 1),
if(substr(url, length(url) - 3,1)='.',substr(url, length(url) - 2),
''))) AS ext
,count(*)
FROM `test` WHERE 1
group by ext
拡張子は3文字であるという保証はありません。4文字以上の
場合は適宜調整ください
この回答への補足
少し補足させてください。
SELECT ファイル名,(同じだった数)
というのは、例えば、
id url
1 ~abc.wav
2 ~123.wav
3 ~123.wav
4 ~abc.wav
5 ~123.wav
の場合、期待する出力は
ファイル名 同じだった数
abc.wav 2
123.wav 3
のようなイメージです。
また、拡張子は必ず3文字です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Oracle sqlで質問です。 idを元にidに紐付くデータで住所コードがjpのみのデータ以外のidを取得したい 4 2023/03/20 17:41
- その他(プログラミング・Web制作) セレクトボックスで選択された値をコントローラーで使用したい 2 2022/07/26 16:41
- PHP Q&Aサイトを作成していてURLの生成方法について迷っているのでアドバイスお願い致します 1 2023/08/10 16:42
- MySQL PHP 画像のアップロード Qiita 2 2022/11/28 04:44
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- Oracle sqlで質問です。 Aテーブルの情報をBテーブルに更新かけたいです。 やりたいことは、Bテーブルの受 1 2023/05/17 11:17
- Visual Basic(VBA) Excelのマクロについて教えてください。 作業フォルダ内に2つのファイルがあります。 このファイル 2 2023/07/09 13:40
- Access(アクセス) Accessの参照フィールドの列がずれてしまいます 1 2023/07/19 15:00
- SQL Server ACCESSで表が作りたく、そのためのSQL文や設定方法を教えてください。 1 2022/08/15 12:28
- その他(プログラミング・Web制作) python 気象データの取得 2 2023/06/20 23:54
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
BLOB型のPDF出力の方法
-
Excel 2019 のピボットテーブル...
-
エクセルVBAで5行目からオート...
-
「直需」の意味を教えてください
-
Oracle 2つのDate型の値の差を...
-
作番ってどういう意味でしょうか?
-
Accessでテーブル名やクエリ名...
-
3つの表を1つに縦に連結する
-
Accessのフィールド数が255しか...
-
SUBSTRING 関数に渡した長さの...
-
異なるサーバのDBデータ同士を...
-
セルの右クリックで出る項目を...
-
ACCESSのクエリで集計で、先頭...
-
Vbaでアクセスからエクセルにリ...
-
access2000:フォームで入力し...
-
Accessレポートで特定条件で改...
-
Accessレコードの追加や変更が...
-
Accessで数値型にNULLをInsert...
-
空白をそのままインポートする...
-
データベースの1要素に複数デー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
BLOB型のPDF出力の方法
-
エクセル内のURLからHPのタイト...
-
PHP+MySQLで複数配列の挿入(IN...
-
urlを短くする方法を探していま...
-
TortoiseSVNのリポジトリブラウ...
-
autorun がうまく動作しない
-
MySQLでテーブル一致条件に正規...
-
DBの<a>タグを[url]タグへ変更...
-
urlに表示されるxxxx.doの...
-
phpとmysqlでデータの一覧表示...
-
複数テーブルを検索するクエリ...
-
mysqlでの対象範囲で検索するSQ...
-
ラジオ番組のホームページのメ...
-
text型とuniqueについて
-
id,urlというテーブルにおいて...
-
PHP・MySLを使用してURLを保存...
-
あの、WEB巡回自動スクリーンシ...
-
大量のPHPファイルからタイトル...
-
Excel 2019 のピボットテーブル...
-
エクセルVBAで5行目からオート...
おすすめ情報