【问题标题】:newbie: mysql join 2 tables to gether and count the results新手:mysql加入2个表来收集并计算结果
【发布时间】:2012-06-21 18:37:02
【问题描述】:

我正在尝试加入 2 个表并计算结果。 我有这些表;

SET NAMES utf8;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
--  Table structure for `segments`
-- ----------------------------
DROP TABLE IF EXISTS `segments`;
CREATE TABLE `segments` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `substr_id` int(255) NOT NULL,
  `substr` varchar(255) NOT NULL,
  `count` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;

-- ----------------------------
--  Records of `segments`
-- ----------------------------
BEGIN;
INSERT INTO `segments` VALUES ('1', '1', 'book', '2'), ('2', '2', 'ooki', '1'), ('3', '2', 'okin', '1'), ('4', '2', 'king', '1');
COMMIT;

-- ----------------------------
--  Table structure for `words`
-- ----------------------------
DROP TABLE IF EXISTS `words`;
CREATE TABLE `words` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `substr_id` int(11) NOT NULL,
  `word` varchar(255) NOT NULL,
  `cleaned` tinyint(1) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;

-- ----------------------------
--  Records of `words`
-- ----------------------------
BEGIN;
INSERT INTO `words` VALUES ('1', '1', 'book', '0'), ('2', '2', 'booking', '0'), ('3', '2', 'booking', '0'), ('4', '2', 'booking', '0');
COMMIT;

SET FOREIGN_KEY_CHECKS = 1;

用 sql + 数据更改问题。

我正在尝试:

 SELECT words with there count from segments.count based upon there substr_id. 

谁能帮我完成这件事?我不太擅长 SQL,有红色文档和一些教程,但不太明白我应该如何在单个查询中完成上述所有操作。

【问题讨论】:

  • 您的意思是 他们的计数 比如出现次数?你能澄清一下你想计算什么吗?我可以看到一个专栏count。您还想要记录计数还是什么?

标签: mysql sql join count


【解决方案1】:
 SELECT word, count
   FROM words NATURAL JOIN segments;

应该做的伎俩。我建议做更多的研究。 http://en.wikipedia.org/wiki/Join_(SQL)

【讨论】:

  • 好吧,这就是我必须选择某人的诀窍,因此基于最佳+最低点。
  • 很高兴它有帮助。有很多不同的方法可以做到这一点,一般来说JOINS。请记住,NATURAL JOINS 仅在两个表都具有链接它们的通用命名字段时才有效,在本例中为 id
【解决方案2】:

您需要聚合函数 COUNT() 来计算查询结果。

有许多链接可以帮助解决这个问题,但像 http://dev.mysql.com/doc/refman/5.1/en/counting-rows.html 这样的链接应该会有所帮助。

【讨论】:

    【解决方案3】:

    您可能需要某种连接条件,否则您将获得笛卡尔积,但这应该可以帮助您入门:

    SELECT COUNT(*)
    FROM words
    JOIN count --add an ON condition here unless you want a cartesian product
    

    有点不清楚你想要做什么,但如果这不是你想要的,请随时澄清。

    祝你好运!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-28
      • 2021-12-22
      • 1970-01-01
      • 2021-12-14
      • 2013-11-08
      • 2018-05-14
      相关资源
      最近更新 更多