Rumah  >  Soal Jawab  >  teks badan

Cara menggunakan Kemas kini dalam pernyataan Kes dengan lajur sebagai alias

<p>Saya mempunyai jadual yang dipanggil sales_data dengan 3 lajur (id int, udf varchar(20), date_of_sale datetime). Saya cuba mencari hari bekerja bagi lajur date_of_sale dengan melaraskan masa kepada 6 jam, kini saya perlu mengemas kini lajur udf ke hari bekerja bersamaan dengan date_of_sale. Saya mempunyai idea untuk pertanyaan pilihan, tetapi bagaimanakah cara saya mengemas kini lajur udf? </p> <pre class="brush:php;toolbar:false;">pilih hari bekerja(submasa(s.date_of_sale ,'6:0:0')) sebagai putdata, KES WHEN hari kerja(submasa(s.date_of_sale ,'6:0:0'))=0 THEN 'Ahad' WHEN hari kerja(submasa(s.tarikh_jualan ,'6:0:0'))=1 MAKA 'Isnin' WHEN weekday(subtime(s.date_of_sale ,'6:0:0'))=2 THEN 'Selasa' WHEN weekday(subtime(s.date_of_sale ,'6:0:0'))=3 THEN 'Rabu' WHEN weekday(subtime(s.date_of_sale ,'6:0:0'))=4 THEN 'Khamis' BILA hari minggu(submasa(s.tarikh_jualan ,'6:0:0'))=5 MAKA 'Jumaat' BILA hari minggu(submasa(s.tarikh_jualan ,'6:0:0'))=6 MAKA 'Sabtu' TAMAT sebagai udf daripada data_jualan s;</pre></p>
P粉214089349P粉214089349410 hari yang lalu503

membalas semua(2)saya akan balas

  • P粉256487077

    P粉2564870772023-09-06 14:26:54

    Tambah lajur terhasil (https://dev.mysql.com/doc/refman/8.0/en/create-table-generated-columns.html) untuk memudahkan pemprosesan dan mengelakkan ketidakkonsistenan data:

    alter table sales_data add weekday varchar(10) GENERATED ALWAYS
      AS (CASE   
        WHEN weekday(subtime(s.date_of_sale ,'6:0:0'))=0 THEN 'Sunday'  
        WHEN weekday(subtime(s.date_of_sale ,'6:0:0'))=1 THEN 'Monday'  
        WHEN weekday(subtime(s.date_of_sale ,'6:0:0'))=2 THEN 'Tuesday'  
        WHEN weekday(subtime(s.date_of_sale ,'6:0:0'))=3 THEN 'Wednesday'  
        WHEN weekday(subtime(s.date_of_sale ,'6:0:0'))=4 THEN 'Thursday'  
        WHEN weekday(subtime(s.date_of_sale ,'6:0:0'))=5 THEN 'Friday'  
        WHEN weekday(subtime(s.date_of_sale ,'6:0:0'))=6 THEN 'Saturday'  
    END );

    Lihat demo: https://dbfiddle.uk/2d5iIvBv

    (Saya tidak mendapat hari bekerja yang sama, mungkin tempat itu?)

    balas
    0
  • P粉035600555

    P粉0356005552023-09-06 14:04:15

    Pertanyaan anda di atas hampir selesai. Anda hanya perlu menambah penyata kemas kini.

    Pertanyaan di bawah sepatutnya sesuai untuk anda.

    update sales_data 
    set udf = case   
        when weekday(subtime(date_of_sale,'6:0:0')) = 0 then 'Sunday'  
        when weekday(subtime(date_of_sale,'6:0:0')) = 1 then 'Monday'  
        when weekday(subtime(date_of_sale,'6:0:0')) = 2 then 'Tuesday'  
        when weekday(subtime(date_of_sale,'6:0:0')) = 3 then 'Wednesday'  
        when weekday(subtime(date_of_sale,'6:0:0')) = 4 then 'Thursday'  
        when weekday(subtime(date_of_sale,'6:0:0')) = 5 then 'Friday'  
        when weekday(subtime(date_of_sale,'6:0:0')) = 6 then 'Saturday'  
     end;

    balas
    0
  • Batalbalas