0

我正在将数据从 MySQL 导出到 .csv,我需要根据表中的特定列包含行数。

我有一个名为e列的表ide1并且e2

|id|e1|e2|
| 1| A|  |
| 2| A|  |
| 3| A|  |
| 4| B|  |
| 5| C|  |
| 6| B|  |

我正在寻找的结果是:

|id|e1|e2|
| 1| A| 3|
| 2| A| 3|
| 3| A| 3|
| 4| B| 2|
| 5| C| 1|
| 6| B| 2|

如果我尝试这样的事情:

UPDATE `e` SET `e2` = (SELECT COUNT(`id`) FROM `e` WHERE `e1` = 'A') WHERE `e1` = 'A';

我明白了:您不能在 FROM 子句中指定目标表 'e' 进行更新

如何更新我的数据,以便 in 的值为e2COUNT 的行的值为 from e1?这是我不能/不应该在 MySQL 中做但应该在 PHP 中做的事情吗?

(我觉得我错过了一些明显的东西......)

4

3 回答 3

2
UPDATE e a, (SELECT e1,COUNT(*) cnt 
               FROM e 
           GROUP BY e1) b

   SET a.e2 = b.cnt
 WHERE a.e1 = b.e1;
于 2013-07-07T16:13:18.593 回答
0
with
AAA AS
(
    select e1,count(*) as cnt from e group by e1
)

update e
set e2 = AAA.cnt
from e
inner join AAA ON e.e1 = AAA.e1
于 2013-07-07T16:07:18.487 回答
0

尝试以下查询:

update e
set e2 = a.cnt
from e inner join (select e1,count(*) as cnt from e as a group by e1) as a ON e.e1 = A.e1
于 2013-07-07T16:15:44.830 回答