在数据库MySQL版本5.5.24-log
中,我有两个表tbl_t1
和 tbl_t2
。
这些表有共同的关键区域
。
这是如此,因为如果尝试此连接查询,输出是正确的:
mysql> SELECT
areat2,
areat1,
nameareat1,
monthareat2
FROM
tbl_t1 t1
JOIN tbl_t2 t2 ON t1.areat1 = t2.areat2
WHERE
monthareat2 = '2014-08'
GROUP BY
t1.areat1
ORDER BY
t1.nameareat1 ASC;
+--------+--------+-----------------------+-------------+
| areat2 | areat1 | nameareat1 | monthareat2 |
+--------+--------+-----------------------+-------------+
| XX4M | XX4M | AREA AAAAAA | 2014-08 |
| XX5M | XX5M | AREA BBBBBB | 2014-08 |
| XX4N | XX4N | AREA CCCCCC | 2014-08 |
| XX1M | XX1M | AREA DDDDDD | 2014-08 |
+--------+--------+-----------------------+-------------+
4 rows in set
现在,当存在两个表的键区域时,我需要更新表tbl_t1
中的字段valid
.
我尝试过这个解决方案,但出现错误。
UPDATE tbl_t1 t1
JOIN (
SELECT
areat2,
areat1,
nameareat1,
monthareat2
FROM
tbl_t1 t1
JOIN tbl_t2 t2 ON t1.areat1 = t2.areat2
WHERE
monthareat2 = '2014-08'
GROUP BY
t1.areat1
) AS t2 ON t1.areat1 = t2.areat2
SET t1.valid = 1;
[Err] 1060 - Duplicate column name 'areat1'
你能解释一下这是怎么做的吗?
提前谢谢您。
最佳答案
在内部和外部查询中使用不同的别名:
UPDATE tbl_t1 t3
JOIN (
SELECT
areat2,
areat1,
nameareat1,
monthareat2
FROM
tbl_t1 t1
JOIN tbl_t2 t2 ON t1.areat1 = t2.areat2
WHERE
monthareat2 = '2014-08'
GROUP BY
t1.areat1
) AS t4 ON t3.areat1 = t4.areat2
SET t3.valid = 1;
关于MySQL 5.5.24-log 更新查询连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26158012/