我不知道该怎么做..
我有一张这样的桌子:
account_categories
--------------------
id | description
--------------------
34 | Home Services
35 | Home Services
36 | Home Services
39 | Home Design
40 | Home Design
我有另一个引用 account_categories.id 的表(帐户),它使用上述所有值。:/
我想展平 account_categories,所以我需要从 account_categories 中选择一个重复项并更新帐户,以便所有重复项都使用一个选定的值。
例如,我需要转这个:
accounts
---------------------
id | accountCategory
---------------------
1 | 34
2 | 35
3 | 36
4 | 39
5 | 40
进入这个:
accounts
---------------------
id | accountCategory
---------------------
1 | 34
2 | 34
3 | 34
4 | 39
5 | 39
我可以从这样的帐户类别中选择一个 ID 和不同的描述:
SELECT DISTINCT (description), id
FROM crmalpha.account_categories
GROUP BY description
但我想下一步是做这样的事情:
for ( row in ( SELECT DISTINCT (description), id FROM crmalpha.account_categories GROUP BY description ) ) {
UPDATE crmalpha.accounts SET accountCategory = $row['id'] WHERE accountCategory IN ( SELECT id FROM crmalpha.account_categories WHERE description = $row['description] )
}
原谅for循环和php变量伪代码,我只是想从逻辑上考虑一下。我不知道如何在纯 SQL 中完成此操作。
有任何想法吗?
PS.,之后,我将遍历并从 account_categories 中删除帐户表中未使用 ID 的每一行。