用其他表中列的唯一值数填充sql表中的列

Posted

技术标签:

【中文标题】用其他表中列的唯一值数填充sql表中的列【英文标题】:Fill a column in sql table with the number of unique values of a column from other table 【发布时间】:2021-12-25 07:39:56 【问题描述】:

我有两个 sql 表 t1 和 t2,我想用 t2 中一列中唯一值的数量填充 t1 中的一列。

示例:t1 有两列 acount

   a   count
1  1  
2  1  
3  2

示例:t2 有一列 b

   b 
1  3  
2  3  
3  2
4  5
5  5

t2 在 b 列中有 3 个唯一值,我希望 t1 像这样,count 列由 t2.b 中唯一值的数量填充

   a  count
1  1  3
2  1  3
3  2  3

【问题讨论】:

mysql 与 SQL Server 不同。不要垃圾标签。 【参考方案1】:

不确定我是否弄错了您的问题。 我猜你想找出 t2 中所有不同的值及其计数。 你需要的是GROUP BYINSERT INTO ... SELECT

CREATE TABLE t1
(
   a INTEGER,
   count INTEGER
);


CREATE TABLE t2
(
   b INTEGER
);

INSERT INTO t2 VALUES(1);
INSERT INTO t2 VALUES(1);
INSERT INTO t2 VALUES(1);
INSERT INTO t2 VALUES(2);
INSERT INTO t2 VALUES(2);
INSERT INTO t2 VALUES(3);

INSERT INTO t1
    (a, count)
SELECT
    b,
    count(b)
FROM
    t2
GROUP by
    b;
    
SELECT * FROM t1;

【讨论】:

【参考方案2】:

创建您的表格

declare @t1 table(
   FIELD1 INTEGER  NOT NULL PRIMARY KEY 
  ,a      INTEGER  NOT NULL 
);
INSERT INTO @t1(FIELD1,a) VALUES (1,1);
INSERT INTO @t1(FIELD1,a) VALUES (2,1);
INSERT INTO @t1(FIELD1,a) VALUES (3,2);

declare @t2 table(
  b      INTEGER  NOT NULL
);
INSERT INTO @t2(b) VALUES (3);
INSERT INTO @t2(b) VALUES (3);
INSERT INTO @t2(b) VALUES (2);
INSERT INTO @t2(b) VALUES (5);
INSERT INTO @t2(b) VALUES (5);

你的选择

select FIELD1,a

,(select count(distinct b) from @t2) as count1 

from @t1

【讨论】:

以上是关于用其他表中列的唯一值数填充sql表中的列的主要内容,如果未能解决你的问题,请参考以下文章

是否有任何其他选项可以从表中获取总计数和同一查询中列的不同计数?

如何将一个表中列的每个不同值映射到 Hive 中另一个表中列的每个不同值

Postgres 表中列的顺序会影响性能吗?

在access里用一个列显示其他列的平均值

Big Query Tables 中列的默认值

更新查询以根据不同表中的值更改一个表中列的现有值