我是SQL的新手,我无法充分利用其他类似的问题。
我想给所有共享同一栋房子的人提供30%的折扣,所以我有一张带有身份证,价格和房屋名称的桌子。
这是我的疑问:
mydf <- data.frame(a=1:3,b=2:4,c=3:5,d=4:6,e=5:7)
## a b c d e
##1 1 2 3 4 5
##2 2 3 4 5 6
##3 3 4 5 6 7
## rev_quest_7 extracts columns "a" and "c"
rev_quest_7 <- mydf[,c(1,3)]
## rev_quest_5 extracts columns "b" and "d"
rev_quest_5 <- mydf[,c(2,4)]
## update_7 and update_5 operates on rev_quest_7 and rev_quest_5, respectively
update_7 <- 2 * rev_quest_7
## a c
##1 2 6
##2 4 8
##3 6 10
update_5 <- 3 * rev_quest_5
## b d
##1 6 12
##2 9 15
##3 12 18
mydf_calc <- mydf %>% select_(.dots=paste0("-",unique(c(colnames(rev_quest_7),colnames(rev_quest_5))))) %>%
bind_cols(update_7,update_5)
## e a c b d
##1 5 2 6 6 12
##2 6 4 8 9 15
##3 7 6 10 12 18
它表示&#34;表被指定两次,两者都作为&#39;更新&#39;的目标。并作为数据的单独来源&#34;但我知道没有其他方法来保存房子的字符串并比较其他声音。
我该怎么办?
答案 0 :(得分:3)
这是MySQL的一个限制。解决方案是使用JOIN
:
UPDATE person p JOIN
(SELECT p.house
FROM person p
GROUP BY p.house
HAVING COUNT(*) > 2
) ph
ON p.house = ph.house
SET p.price = p.price * 0.97;
JOIN
执行过滤而不是IN
运算符。