0

いずれにせよ行を更新したいのですが、特定のフィールドに何らかの条件がある場合は、特定のフィールドを更新する必要があります。

この場合の例は、記事を更新したい場合です。このarticlesテーブルには、ブール値である5つの列(id、caption、content、publishdate、published)がpublishedあります。

今、私は特定の行をどのような場合でも更新したいのですが、trueのpublishdate場合publishedは更新する必要があります。1つのクエリでそれが必要です。

そのようなことをする方法はありますか?

編集publishedデータベースではなく、クエリで の値を確認したい。何かのようなもの:

UPDATE articles SET (published AS b) = true, publishdate = (b==true? 'new date': b)
4

2 に答える 2

3
UPDATE articles
SET publishdate = CASE WHEN published = 1 THEN <new value> ELSE publishdate END 
    [, ...]
[WHERE ...]

代わりにパラメータ値を確認したい場合は、それを行うこともできます。

UPDATE articles
SET publishdate = CASE WHEN @published = 1 THEN <new value> ELSE publishdate END 
    [, ...]
[WHERE ...]
于 2013-01-17T08:17:04.753 に答える
3

inline IFステートメントを使用できます。例えば

UPDATE articles
SET publishedDate = IF(published = 1, 'new date HERE', publishedDate)
-- WHERE condition here

これは、1 = trueブール値を文字列として格納する場合、IF(published = 'true',...

更新1

-- assumes 0 = false, 1 = true
SET @status := 1;
SET @newDate := CURDATE();

UPDATE articles
SET publishedDate = IF(1 = @status, @newDate, publishedDate),
    published = @status
-- WHERE condition here
于 2013-01-17T08:17:11.007 に答える