簡體   English   中英

如果存在特定行,如何將MYSQL列設置為特定值?

[英]How to set MYSQL column to certain value if a certain row exists?

我想在我的表中生成一個新列,如果在特定條件下存在一行,則該列為true。

name | col1 | col2 | flag
--------------------------
a      1      2      0
a      2      3      0
b      1      2      0
b      4      3      0

可以說,如果存在具有該name的行,並且其中col1=2col2 = 3我想將每個name標識符的標志設置為1。 因此,這將導致:

name | col1 | col2 | flag
--------------------------
a      1      2      1
a      2      3      1
b      1      2      0
b      4      3      0

因為對於a與行col1=2col2 = 3存在,但對於b ,這樣的行不存在。

用偽代碼,我想要這樣的東西:

ALTER TABLE table_name
ADD flag TINYINT(1)
IF ##row with condition col1=value1 and col2=value2 exists#
GROUP BY name

如何生成此列?

因此,您只想從db獲取這些值? 還是要添加列? 那是兩個不同的目標。

因此,如果您只需要獲取這些值,則可以:

http://sqlfiddle.com/#!9/65b4c2/1

SELECT t.*, t2.flag
FROM table_name t
LEFT JOIN (
  SELECT name, MAX(IF(col1=2 AND col2=3,1,0)) flag
  FROM table_name
  GROUP BY name
  ) t2
ON t.name = t2.name

如果您確實需要添加新列,則可以使用以下方式:

http://sqlfiddle.com/#!9/226fb3/1

ALTER TABLE table_name ADD COLUMN flag TINYINT;

UPDATE table_name t
LEFT JOIN (
      SELECT name, MAX(IF(col1=2 AND col2=3,1,0)) flag
      FROM table_name
      GROUP BY name
      ) t2
ON t.name = t2.name
SET t.flag=t2.flag

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM