2017-06-30 18 views
-3

使用下面的示例表格,截至目前,我有:UPDATE wc_bidsys_picklist SET vipplays = 'YES' WHERE playoftheday = 'YES';
這是非常正確的嗎?如果是這樣,我怎麼還可以添加:「在由列(game_date)字段值設置的特定範圍內?」介於'2016-06-29 00:00:00'至'2017-06-29 00:00:00'之間。這甚至有可能嗎?

我的詳細具體的問題:(以上部分回答)
使用下面我的例子爲一個所謂的「wc_bidsys_picklist」表:使用SQL是有辦法每個的更新值(「NO」爲「YES」)只有當它不等於不同特定列(playoftheday)的字段時,這兩個列中的字段最終纔會具有匹配的值('YES'),而在由特定列設置的特定範圍內第三列(game_date)?
使用SQL如何才能更新一列的字段值以匹配不同列的字段值,只有當這些值不相等時?

更簡單來說,我需要通過是否‘2017年6月29日00:00:00’說「從‘2016年6月29日00:00:00’列(GAME_DATE)的字段值列(playoftheday)='YES'和列中的字段值(vipplays)='NO',那麼將列(vipplays)中的字段值更新爲'YES'。如果可能的話,這可以寫入SQL ?

UPDATE:經過幾次更新,這一次似乎工作小提琴
我的小提琴:http://sqlfiddle.com/#!9/69cf4/1/0

CREATE TABLE wc_bidsys_picklist 
    (`id` int, `game_date` datetime, `playoftheday` varchar(5), `vipplays` varchar(5)) 
; 

INSERT INTO wc_bidsys_picklist 
    (`id`, `game_date`, `playoftheday`, `vipplays`) 
VALUES 
    (1, '2016-07-01 00:00:00', 'YES', 'NO'), 
    (2, '2016-07-03 00:00:00', 'YES', 'YES'), 
    (3, '2016-07-04 00:00:00', 'YES', 'NO'), 
    (4, '2016-07-04 00:00:00', 'YES', 'NO'), 
    (5, '2016-07-06 00:00:00', 'YES', 'NO'), 
    (6, '2016-07-07 00:00:00', 'YES', 'YES'), 
    (7, '2017-06-08 00:00:00', 'YES', 'NO'), 
    (8, '2017-06-29 00:00:00', 'YES', 'NO') 
; 
UPDATE 
    wc_bidsys_picklist 
SET 
    vipplays = 'YES' 
WHERE 
    playoftheday = 'YES' 
AND 
    (game_date BETWEEN '2016-07-01 00:00:00' AND '2017-06-29 00:00:00'); 


在附註上,我想重申一下,我對這個社區和編程相對來說比較陌生。我不明白爲什麼所有的直接倒票。看起來成員們更喜歡糾正帖子和欺負新用戶,而不是幫助你。顯然我不是唯一一個:https://hackernoon.com/the-decline-of-stack-overflow-7cb69faa575d這是一個有趣的閱讀。

+0

添加AND_date_added> ='2016-07-20 00:00:00'和date_added <= .....您可以使用NOT或<>作爲排除 – clearshot66

+2

請參閱:[爲什麼要提供MCVE for在我看來是一個非常簡單的SQL查詢?](https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-一個非常簡單的SQL查詢) – Strawberry

+1

phpmyadmin是一個SQL的用戶界面 - 這是不相關的問題:) – ThisGuyHasTwoThumbs

回答

2

我想這這會工作:

UPDATE wc_bidsys_picklist SET vipplays = 'YES' WHERE playoftheday = 'YES' AND game_date='2016-07-20 00:00:00';

更改日期需要。

+0

這忽略了問題的關鍵組成部分:只有當它與另一列的值不匹配時才進行更新......此外,由於日期的時間組成部分,將日期設置爲'=要麼需要投射日期才能包含整天,要麼使用範圍來選擇整個日期。 –

+0

@cale_b爲什麼SET vipplays ='YES'WHERE playoftheday ='YES沒有回答這個問題?是的,它可能會再次將vipplays「Yes」值覆蓋爲「Yes」,但仍然可以完成工作。如果你想消除冗餘,你可以添加另一個AND來過濾掉vipplays =「yes」的行,但是無論如何,你仍然在對這些行進行操作。 –

+0

這會設置一個範圍嗎?或者這只是從'game_date ='2016-07-20 00:00:00''開始並繼續前進?或者這隻會改變這個特定game_date的值? – kma1289

相關問題