SQL无法运行UPDATE查询,因为指定了两次表

时间:2016-11-12 13:31:11

标签: mysql sql database

我是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;但我知道没有其他方法来保存房子的字符串并比较其他声音。

我该怎么办?

1 个答案:

答案 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运算符。