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

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

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

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

1回答

3846閲覧

limit句を使用する内容のテーブルを内部結合する方法

tomoyuki500219

総合スコア21

MySQL

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2021/02/11 01:55

下記、MySQL上でtd_fh6800_1_readlogテーブルの先頭120行と、td_fh6800_1_writelogテーブルの先頭120行目から120行を取得するSQLがあります。

このそれぞれの実行結果で、td_fh6800_1_readlogテーブルの先頭120行を取得したデータと、td_fh6800_1_writelogテーブルの先頭120行目から120行を取得したデータで一致するデータを取得したいです

limit句を使うと、INNER JOINが使えませんでした。

ご教示の程、よろしくお願いします

select name,nom,suf from td_fh6800_1_readlog limit 120 select name,nom,suf from td_fh6800_1_writelog limit 120,120;

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

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

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

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

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

m.ts10806

2021/02/11 02:33

MySQLのバージョンと 該当のテーブルのテーブル定義と サンプルデータと join使ってみたSQLと 望む結果をご提示ください
tomoyuki500219

2021/02/11 04:01

ご回答ありがとうございます 下記、回答がわかりくい懸念がありますが、回答させていただきます。 MySQLバージョン5.7.25 テーブル定義 id int(10) UN AI PK avf int(10) UN tno smallint(5) UN name tinyint(3) UN part tinyint(3) UN nom int(11) itf tinyint(3) UN suf tinyint(3) UN sufatr tinyint(3) UN pkno smallint(5) UN lengthA double UN lengthB double lengthC double diameter double toolsetX bigint(20) UN toolsetZ bigint(20) UN rotate smallint(6) mtr1 tinyint(3) UN mtr2 tinyint(3) UN mtr3 tinyint(3) UN mtr4 tinyint(3) UN mtr5 tinyint(3) UN mtr6 tinyint(3) UN mtr7 tinyint(3) UN mtr8 tinyint(3) UN mtr9 tinyint(3) UN holdno smallint(6) holdtype smallint(6) lifetime float usetime float lifenumber smallint(5) UN usenumber smallint(5) UN gno int(11) compno int(11) idno tinyint(4) wearcompX int(11) wearcompZ int(11) wearcompY int(11) maxwearX int(11) maxwearZ int(11) maxwearY int(11) model tinyint(4) teyecompX int(11) teyecompZ int(11) holdlength int(11) holddiam int(11) sts int(11) angle smallint(6) index_select tinyint(3) UN easycompX int(11) easycompZ int(11) easycompY int(11) conscompX int(11) conscompZ int(11) conscompY int(11) lengcomp int(11) maxrotate int(11) tipangle smallint(6) radcomp int(11) radcomp_no int(11) lencomp int(11) lencomp_no int(11) anglecomp int(11) cutang int(11) edgang int(11) holdwidth1 int(11) holdwidth2 int(11) twidth int(11) lbbno tinyint(3) UN edgwidth int(11) grvdepth int(11) taprfeed smallint(5) UN taptype tinyint(3) UN horsepower tinyint(3) UN thrust tinyint(3) UN teeth int(11) cutdepth int(11) cornerR int(11) chamferangle int(11) minimumdia int(11) threshold smallint(5) UN mc smallint(6) UN tm timestamp データ1レコード 3 0 3 13 0 100 0 0 0 0 2136150 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6000 1200 0 0 1100000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2021-02-10 11:34:24 SQLは select name,nom,suf from td_fh6800_1_writelog limit 120 inner join select name,nom,suf from td_fh6800_1_readlog limit 120,120 on td_fh6800_1_writelog.name=td_fh6800_1_readlog.name and td_fh6800_1_writelog.nom=td_fh6800_1_readlog.nom and td_fh6800_1_writelog.nom=td_fh6800_1_readlog.nom and d_fh6800_1_writelog.suf=td_fh6800_1_readlog.suf; エラー内容 12:49:26 select name,nom,suf from td_fh6800_1_writelog limit 120 inner join select name,nom,suf from td_fh6800_1_readlog limit 120,120 on td_fh6800_1_writelog.name=td_fh6800_1_readlog.name and td_fh6800_1_writelog.nom=td_fh6800_1_readlog.nom and td_fh6800_1_writelog.nom=td_fh6800_1_readlog.nom and d_fh6800_1_writelog.suf=td_fh6800_1_readlog.suf Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'inner join select name,nom,suf from td_fh6800_1_readlog limit 120,120 on td_fh6' at line 1 0.000 sec 望む結果はtd_fh6800_1_writelogテーブルにないtd_fh6800_1_readlogテーブルのデータを取りたいです。td_fh6800_1_writelogテーブルとtd_fh6800_1_readlogテーブルには同じレコードが数件存在しています。
guest

回答1

0

ベストアンサー

先頭120行

これが「id列の昇順に並べたときの先頭120行」だとします。

td_fh6800_1_readlogテーブルの先頭120行を取得したデータと、td_fh6800_1_writelogテーブルの先頭120行目から120行を取得したデータで一致するデータ

これは以下のようなSQLで取得することができます。

SQL

1SELECT * 2FROM ( 3 SELECT * FROM td_fh6800_1_readlog ORDER BY id LIMIT 120 4) AS A 5JOIN ( 6 SELECT * FROM td_fh6800_1_writelog ORDER BY id LIMIT 120, 120 7) AS B 8ON A.name = B.name AND A.nom = B.nom AND A.suf = B.suf;

ところで、追記には以下のように書かれていますね。

望む結果はtd_fh6800_1_writelogテーブルにないtd_fh6800_1_readlogテーブルのデータを取りたいです。

求める結果がこちらであれば、次のようなSQLで実現できると考えられます (もうすこしスマートなやり方があるかもしれませんが)

SQL

1SELECT * 2FROM ( 3 SELECT * FROM td_fh6800_1_readlog ORDER BY id LIMIT 120 4) AS A 5WHERE NOT EXISTS ( 6 SELECT * 7 FROM (SELECT * FROM td_fh6800_1_writelog ORDER BY id LIMIT 120, 120) AS B 8 WHERE A.name = B.name AND A.nom = B.nom AND A.suf = B.suf 9)

投稿2021/02/11 04:31

neko_the_shadow

総合スコア2349

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

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

tomoyuki500219

2021/02/11 08:52

ご回答ありがとうございます。非常に助かりました! ASは知っていたのですが、上手く使えてなかったです。 SQLはエラーなく動作し、結果もよさそうですが、現状、データ自体が試行錯誤中でキーになるカラムがまだ試行錯誤中でして、きちっりと確定したらまた実行してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問