sql >> データベース >  >> RDS >> Mysql

動的テーブル名から選択する方法

    1つの(を開きます 2 )を閉じます 。最後を削除します:

    SELECT CONCAT('changes',year,month) FROM changes
    

    編集

    2番目のステートメントはおそらく

    SET @x := SELECT * FROM (@b) as b;
    

    それは機能しますが、それがあなたが望むものであるかどうかはわかりません:

    SET @b := 'SELECT CONCAT(''changes'',`year`,`month`) FROM whichchanges';
    SET @x := 'SELECT * FROM (SELECT CONCAT(''changes'',`year`,`month`) FROM whichchanges) as b';
    Prepare stmt FROM @b;
    Prepare stmt FROM @x;
    Execute stmt;
    

    Edit2

    私があなたの言うことを正しく理解していれば、あなたはその単一のクエリを探しています:

    select * from changes
    where change_column in (select distinct concat(`year`, `month`) from whichchanges)
    

    Edit3

    select @b := group_concat(concat(' select * from changes', `year`, `month`, ' union ') separator ' ') as w from whichchanges;
    set @b := left(@b, length(@b) - 6);
    
    Prepare stmt FROM @b;
    Execute stmt;
    

    SQLFiddleの例




    1. 外部キーSQL:外部キー操作について知っておくべきことすべて

    2. 配列パラメータをネイティブクエリにバインドします

    3. ADO.NET/C#を介してOracle(ODP.NET 10g)に配列/テーブルパラメータを使用するにはどうすればよいですか?

    4. MySqliコマンドが同期していません。現在、このコマンドを実行することはできません