[英]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=2
和col2 = 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=2
和col2 = 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.