前提・実現したいこと
タイトルの通り、sqlに連番を割り振り、データを表示させたいです。
点数がバラバラの数字になっているので、1,2,3,4のように連番にさせたい。
動作環境は、
Mac air/catarina 10.15
mysql バージョン5.7
該当のソースコード
$sql = 'SELECT (SELECT COUNT(*)+1 FROM goals WHERE goal_time > g.goal_time) AS "点数", p.kickoff as "試合日時", c.name as "対戦相手", g.goal_time as "ゴールタイム" FROM pairings as p LEFT JOIN countries as c ON p.enemy_country_id = c.id LEFT JOIN goals as g ON g.pairing_id = p.id WHERE g.player_id = :id ORDER BY p.kickoff, g.goal_time ASC';
##発生している問題
mysqlのバージョンが5.7なのでROW_NUMBER関数が使用できません。バージョンを8にあげれば使えるみたいですが、訳あってバージョンは5.7のまま連番を実装させたいです。
そのため、ROW_NUMBERではなく、countを使っています。
試したこと・調べたこと
【SQL】row_numberのないMySQLでユーザー変数を使わずに連番を振る
こちらの記事を参考に連番の実装をしています。
SELECT COUNT()+1 FROM goals WHERE id > g.id→76,77,78,79となる。
※これだと連番だが、76から数字が始まるので実装したい連番ではない。1から数字をスタートさせたい。
SELECT (SELECT COUNT()+1 FROM pairings WHERE id > p.id)→134,118,40,40となる
SELECT (SELECT COUNT()+1 FROM pairings WHERE id > g.id)→31,32,33,34となる
SELECT (SELECT COUNT()+1 FROM goals WHERE p.id > g.id)→全て1になる
あなたの回答
tips
プレビュー