gpt4 book ai didi

mysql - 从 2 个表调用数据

转载 作者:行者123 更新时间:2023-11-30 23:02:31 27 4
gpt4 key购买 nike

我是 SQL 的新手。我有 2 个 MySQL 表。以下是它们的结构。

Key_Hash

CREATE TABLE `key_hash` (
`primary_key` int(11) NOT NULL,
`hash` text NOT NULL,
`totalNumberOfWords` int(11) NOT NULL,
PRIMARY KEY (`primary_key`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

--

Key_Word

CREATE TABLE `key_word` (
`primary_key` bigint(20) NOT NULL AUTO_INCREMENT,
`indexVal` int(11) NOT NULL,
`hashed_word` char(3) NOT NULL,
PRIMARY KEY (`primary_key`),
KEY `hashed_word` (`hashed_word`,`indexVal`)
) ENGINE=InnoDB AUTO_INCREMENT=28570982 DEFAULT CHARSET=latin1

现在,下面是我的查询

SELECT `indexVal`, COUNT(`indexVal`) FROM `key_word` WHERE `hashed_word` IN ('001','01v') GROUP BY `indexVal` LIMIT 100;

当你运行上面的查询时,你会得到如下的输出

enter image description here

这里需要注意的是,key_word表中的indexValkey_hash<中的primary_key是同一组数据 表(我想它可以是一个外键?)。换句话说,key_hash 表中的primary_key 数据在key_word 表中显示为indexVal。但请注意 indexVal 可以在表中出现任意次数,因为它不是 key_word 中的主键。

好的,这不是我真正需要的查询。我需要计算每个唯一 indexVal 在上述搜索中出现的次数,并将其除以 key_hash.totalNumberOfWords 中的适当值。

我在下面提供了几个例子。

假设我运行了上面的查询,现在生成了结果。它说

  • indexVal 0 在搜索中出现了 10 次
  • indexVal 1 在搜索中出现了 20 次

  • indexVal 300 在搜索中出现了 20,000 次

现在记住 key_hash.primary_key = key_word.indexVal 。首先,我搜索类似于 key_word.indexValkey_hash.primary_key 并获取关联的 key_hash.numberOfWords。然后我从这个 key_hash.numberOfWords 中除以上述查询中出现的 count() 并将总答案乘以 100(以获得百分比值)。以下是我尝试过但有错误的查询。

  SELECT `indexVal`,COUNT(`indexVal`), (COUNT(`indexVal`) / (select `numberOfWords` from `key_hash` where `primary_key`=`key_word.indexVal`)*100) FROM `key_word` WHERE `hashed_word` IN ('001','01v') GROUP BY `indexVal` LIMIT 100;

我该如何做这份工作?

编辑

key_hash 表是这样的

enter image description here

key_word 表是这样的

enter image description here

最佳答案

您可以使用 JOIN 而不是子查询

SELECT w.indexVal
, COUNT(w.indexVal)
, COUNT(w.indexVal) / MAX(h.numberOfWords) * 100
FROM key_word w
INNER JOIN key_hash h ON h.primary_key = w.indexVal
WHERE w.hashed_word IN ('001','01v')
GROUP BY indexVal
LIMIT 100

关于mysql - 从 2 个表调用数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23327702/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com