未解決:【MySQL】 SQL文で得られた値すべてを用いて、再度SELECTしたい

状況

・ユーザ一覧できるテーブル(user_table)がある。(taro, jiro...)

・ユーザ毎にテーブル($username)がある。(username: "taro" が持つ固有テーブル名が "taro"、jiroくんはjiroテーブルを持っている)


 やりたいこと

・ユーザ一覧から、条件一致するユーザを抽出(これはできる)

・抽出した値を変数に代入して動的なSQL文を扱う(SET句もしくはINTO句で実現する)

・抽出した値を複数の変数に代入して動的なSQL文を扱う(INTO句で実現する)

・抽出した値を利用してSQL文を実行する(IN句でできそうな気がする、できない気もする)
    SELECT username FROM userboard WHERE username IN (SELECT username FROM userboard)' # テストとして同じテーブルから参照してる

・抽出した値をテーブル名として扱う(できてない => 文字列として扱ってCONCAT? )
https://gene.hatenablog.com/entry/20100608/1275994173 

・抽出した値をテーブル名として扱う(できてない)

・抽出した複数の値をペアで扱う(できてない)


適当にfor文を使えば実装できる。

けど、これらはSQL文でできないのかな。


たぶん概念的には、

> SELECT username, user_id FROM user_table WHERE XXXXX;

で得られた結果 @users(user1, user2...), @user_id(uid1, uid2...)を用いて、

> SELECT another_id, address FROM @users(user1) WHERE @user_id(uid1) = another_id;

をやりたいはず(?)

得られる結果は、

+==================+
| another_id1 |  address1 |
+----------------------------+
| another_id2 |  address2 |
+----------------------------+
:
:

だと思う。


理屈的にはできると思うんだけど、MySQLでは動的なテーブルの指定が公に許可されていないっぽい? できない。

keyword: dynamic table name, dynamic column name, prepared statement 


コメント