用其他表中列的唯一值数填充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 有两列 a
和 count
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 BY
和INSERT 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表中的列的主要内容,如果未能解决你的问题,请参考以下文章
是否有任何其他选项可以从表中获取总计数和同一查询中列的不同计数?