在此更新语句中的select中选择了多少行

时间:2014-05-24 13:57:14

标签: mysql sql

table_a
"id"    "countries"
"1"     "US,CA"
"2"     "US,CA"
"3"     "US,AU"
"4"     "US,UK"
"5"     "US"

table_b
"id"    "country"   "total"
"1"     "US"        "0"
"2"     "CA"        "0"
"3"     "UK"        "0"
"4"     "AU"        "0"

的Sql

update table2 
set total = (
    select count(*) from table1 where FIND_IN_SET(country, countries)
)
WHERE country IN ('US','UK') // Are all other countries counted here or only these?

我尝试使用table_a

中的数据更新table_b

上面的sql运行正常,但是当它运行时实际选择了多少行?

逗号分隔值是我提供的。因此,在'US','UK'的情况下,select count(id)部分还会计算包含'AU','CA'的行,或者只计算CSV中提供的行的行数。

我的想法是仅对我通过逗号分隔字符串提供的国家/地区代码运行计数,而不是全部。

这会计算全部或仅包含我在CSV字符串中提供的内容吗?

FIDDLE

1 个答案:

答案 0 :(得分:1)

是否所有其他国家/地区都在这里?

只有您在此处WHERE country IN ('US','UK')的人被计算在内,其他人将为0。

demo