accounts
テーブルは表1のようになっています。
表1. accountsテーブル
id | name |
---|---|
1 | 大塚 |
2 | 山田 |
3 | 斎藤 |
4 | 杉村 |
5 | 武田 |
select * from accounts where id in(1, 2)
とすると表2の情報が取得できます。
表2
id | name |
---|---|
1 | 大塚 |
2 | 山田 |
select * from accounts where id in(1, 1, 2)
とすると表3のような情報を取得したいのですが、
実行すると表2の結果となります。
重複分は消されてしまいます。
表3
id | name |
---|---|
1 | 大塚 |
1 | 大塚 |
2 | 山田 |
環境
MariaDB 15.1
PHP 5.6.24
質問
どのようにすればINで指定した数だけ、重複ありで取得できますでしょうか?
アプリケーションで実装すると、汚くなるので出来る限りSQLだけで完結させたいです。
PHP
1$accountIds = array(1, 1, 2); 2$results = $db->query('select id, name from accounts where id in('. join(',', $accountIds). ')'); 3 4$accountIdAndNameList = array(); 5 6foreach($accountIds as $accountId) 7{ 8 foreach($results as $x) 9 { 10 if($accountId == $x->id) 11 { 12 $data = new stdClass(); 13 $data->id = $x->id; 14 $data->name = $x->name; 15 16 array_push($accountIdAndNameList, $data); 17 } 18 } 19}

回答2件
あなたの回答
tips
プレビュー