質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

Q&A

解決済

2回答

206閲覧

MariaDB ですべての列を選択したうえで重複していない行と、重複した行を1だけ取得したい

Shoto9023

総合スコア10

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

0グッド

0クリップ

投稿2024/04/02 05:54

編集2024/04/02 06:27

実現したいこと

例えば以下のようなテーブルがあったとき、

idnumberdata
1ABCAAA
2DEFBBB
3ABCCCC
4GHIDDD

以下のようなデータを取り出したいです

idnumberdata
2DEFBBB
3ABCCCC
4GHIDDD

id1id3numberが重複しているので、idの大きいid3、およびnumberが重複していないid2,id4のみを返りとして得たいです。

発生している問題・分からないこと

返りのデータとしてはすべての列を得たいです。
分けてデータを得てから結合する方法ももしかしたらあるのかなと思いますが、可能であれば最初から一つのテーブルで受け取りたいです。(分けて得たとしてもid降順でソートできればよいのですが)

その方法がわからず質問させていただきました。
よろしければご教授いただければと思います。

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

DINSTINCT節を使ってしまうと、すべての列を選択できず、重複している行のみ抽出する方法や重複していない行のみを抽出する方法は見つかったのですが、実現したいことをやるためには少し工夫がいりそうだというところではありましたが、初学者のため調べ方が外れていそうでうまく情報を得られないでいます。

補足

MariaDB および InnoDB です

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2024/04/02 06:05

重複する1と3の内、3が採用されるロジックはなにを基準にしていますか? IDが大きい方?DATAが大きい方?適当(どちらのデータが表示されてもよい)?
Shoto9023

2024/04/02 06:26

すみません、IDが大きいほうです! 追記しておきます…
guest

回答2

0

こんなかんじで

SQL

1create table tbl(id int primary key,number varchar(10),data varchar(10)); 2insert into tbl values 3(1,'ABC','AAA'), 4(2,'DEF','BBB'), 5(3,'ABC','CCC'), 6(4,'GHI','DDD'), 7(5,'JKG','EEE'), 8(6,'JKG','FFF'), 9(7,'JKG','GGG'); 10 11select * from tbl as t1 12where not exists( 13select 1 from tbl where 14number=t1.number and 15id>t1.id)

投稿2024/04/02 06:56

yambejp

総合スコア114883

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2024/04/02 06:57

おっと、かぶりましたね
Shoto9023

2024/04/02 07:41

解決しました!ありがとうございます! なるほどこういった方法があるのですね、勉強になります。 同じ回答をいただいてしまったので、BAはすみませんが早い方に送らせていただきます。
guest

0

ベストアンサー

相関副問合せを条件に用います。
以下参考

SQL

1select * from テーブル as tbl 2where not exists ( 3 select 1 from テーブル where number=tbl.number and id > tbl.id 4 )

投稿2024/04/02 06:55

編集2024/04/02 06:56
sazi

総合スコア25195

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Shoto9023

2024/04/02 07:41

ありがとうございます!解決しました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問