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

MySQLのSELECT中に列名としてCONCATを使用するにはどうすればよいですか?

    さて、あなたが何を求めているのかを理解するのに時間がかかったことを認めなければなりません。 Table2にはs0からs6までの7つの列があり、日付に一致する列から値を取得する必要があります。はい?

    したがって、もちろん

    を使用します
    SELECT CURRENT_DATE(), s2
    

    s2のコンテンツを提供しますが、

    SELECT CURRENT_DATE(), CONCAT('s',DAYOFWEEK(CURRENT_DATE())-1)
    

    's2'を与えます。そうでなければ恐ろしいでしょう。 DBMSが値を計算し、その値が列名と一致するかどうかを確認することを本当に期待していますか?次に

    select name, job from person;
    

    ほとんどの場合、その人の名前と仕事を選択しますが、Jobという名前の人の場合は、代わりに2回仕事を取得します。これは望ましくないことがわかりますよね?

    したがって、代わりに式の結果を確認し、対応する列から読み取ってください:

    insert into table_1 (datum, comment)
    select 
      current_date(), 
      case dayofweek(current_date()) - 1 
        when 0 then s0
        when 1 then s1
        when 2 then s2
        when 3 then s3
        when 4 then s4
        when 5 then s5
        when 6 then s6
      end
    from table_2 where id = 12345;
    


    1. PHP、データベースからデータを取得

    2. AWSMySQLRDSとAWSDynamoDB

    3. PHP SQL:1つのhtmlフォームから複数のデータベースにデータを保存する方法または1つのデータベースから別のデータベースにデータを自動的にコピーする方法

    4. PHPで文字列として返されるMySQLの10進フィールド