Cara menggunakan Kemas kini dalam pernyataan Kes dengan lajur sebagai alias
P粉214089349
P粉214089349 2023-09-05 17:54:59
0
2
530
<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粉214089349
P粉214089349

membalas semua(2)
P粉256487077

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?)

P粉035600555

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;
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan