我有一张植物表,其中一些具有相同的通用名称。如果植物与其他植物共有共同名称,我想在通用名称后面加上括号中的属和种,以避免混淆。值得注意的是,并非所有植物都有一个共同的名称。
为了测试它,我创建了一个common_name2
列。
我写了以下脚本:
UPDATE `plants`
SET `common_name2` = CONCAT(`common_name`, ' (', `genus`, ' ', `species`, ')')
WHERE `common_name` != ''
GROUP BY `common_name`
HAVING COUNT(`common_name`) > 1
但我收到以下错误,我无法弄明白:
#1064 - 您的SQL语法出错;检查与MySQL服务器版本对应的手册,以获得正确的语法 在第1行
GROUP BY common_name HAVING COUNT('common_name') > 1
附近
答案 0 :(得分:1)
你不能这样做:library(fmsb)
## Create some bogus data
MyData = matrix(abs(rnorm(40)), nrow=5, ncol=8)
MyData = data.frame(t(apply(MyData, 1, sort)))
colnames(MyData) = LETTERS[1:8]
## Compare the two radarcharts
par(mfrow=c(1,2))
radarchart(MyData, maxmin=FALSE, title="Counter-Clockwise")
radarchart(MyData[,c(1, 8:2)], maxmin=FALSE, title="Clockwise")
不要跟你的GROUP BY
一起去。{1}}。
以下是如何操作:
SET CONCAT
MySQL 5.6架构设置:
UPDATE `plants`
SET `common_name2` = CONCAT(`common_name`, ' (', `genus`, ' ', `species`, ')')
WHERE `common_name` IN (
select `common_name`
FROM (select * from `plants`) plants
WHERE `common_name` != ''
GROUP BY `common_name`
HAVING COUNT(`common_name`) > 1
)
查询1 :
CREATE TABLE plants
(`id` int, `common_name` varchar(50), `common_name2` varchar(50), `genus` varchar(9), `species` varchar(12))
;
INSERT INTO plants
(`id`, `common_name`, `common_name2`, `genus`, `species`)
VALUES
(1, 'Roses', NULL, 'Rosa', 'Hulthemia'),
(2, 'Roses', NULL, 'Rosa', 'Hesperrhodos'),
(3, 'Roses', NULL, 'Rosa', 'Platyrhodon'),
(4, 'Roses', NULL, 'Rosa', 'Rosa'),
(5, 'Petunia', NULL, 'Petunia', 'axillaris'),
(6, 'Petunia', NULL, 'Petunia', 'integrifolia'),
(7, 'Cardinal', NULL, 'Lobelia', 'cardinalis'),
(8, 'Anthurium', NULL, 'Anthurium', 'andraeanum')
;
UPDATE `plants`
SET `common_name2` = CONCAT(`common_name`, ' (', `genus`, ' ', `species`, ')')
WHERE `common_name` IN (
select `common_name`
FROM (select * from `plants`) plants
WHERE `common_name` != ''
GROUP BY `common_name`
HAVING COUNT(`common_name`) > 1
)
<强> Results 强>:
select * from plants