【问题标题】:My SIGNED INT is casted to UNSIGNED when I do a LEFT JOIN当我进行 LEFT JOIN 时,我的 SIGNED INT 被强制转换为 UNSIGNED
【发布时间】:2011-06-26 22:32:49
【问题描述】:

我正在尝试在 MySQL 中使用 UNSIGNED INT SUM()。当我加入另一个表时,SIGNED INT 变为 UNSIGNED INT。

SELECT `weight` FROM `article_vote`
 LEFT JOIN `vote` ON `vote`.`id` = `article_vote`.`article_id`

返回:

1
1
1
1
1
1
1
1
1
1
1

但是,SELECT weight FROM vote 返回:

1
1
1
1
-1
1
1
-1
-1
-1
1

有什么想法吗?

--

编辑

这 11 行是表中的总记录,因此没有任何 ORDER 或 LIMIT。


编辑

表创建:

CREATE TABLE `vote` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) DEFAULT NULL,
  `weight` int(11) NOT NULL,
  `resource_type` varchar(255) NOT NULL,
  `submited_date` datetime NOT NULL,
  PRIMARY KEY (`id`),
  KEY `IDX_5A108564A76ED395` (`user_id`),
  CONSTRAINT `vote_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8;

CREATE TABLE `article_vote` (
  `id` int(11) NOT NULL,
  `article_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `IDX_8F6C754A62922701` (`anecdote_id`),
  CONSTRAINT `article_vote_ibfk_1` FOREIGN KEY (`article_id`) REFERENCES `article` (`id`),
  CONSTRAINT `article_vote_ibfk_2` FOREIGN KEY (`id`) REFERENCES `vote` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

【问题讨论】:

  • 您能否向我们展示这两个查询的结果:SELECT count(weight) FROM voteSELECT count(weight) FROM article_vote LEFT JOIN vote ON vote.id = article_vote.article_id
  • 两者都返回 11,这是我表中的记录总数,我知道你要到哪里 :) 但这是完整的数据。
  • 两张表的结构是什么?

标签: mysql join casting integer


【解决方案1】:

也许负权重被重新排序,以便在结果集中稍后出现(在标准 MySQL 客户端默认应用的 LIMIT 子句之后)。

【讨论】:

  • 返回的是全表,11条记录
猜你喜欢
  • 2015-12-15
  • 1970-01-01
  • 2012-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多