mysql中left join发生截断

[复制链接]
查看11 | 回复6 | 2007-4-24 20:58:43 | 显示全部楼层 |阅读模式
版本: 5.0.22-community-nt
--
-- 表的结构 `t1`
--

CREATE TABLE IF NOT EXISTS `t1` (
`id` int(11) default NULL,
`con` varchar(10) default NULL,
`error` varchar(255) default NULL,
`s` int(11) default NULL,
`v` int(11) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

--
-- 转存表中的数据 `t1`
--

INSERT INTO `t1` (`id`, `con`, `error`, `s`, `v`) VALUES
(1, 'a', 'err1afghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqr1', 1, 99),
(2, 'a', 'err2afghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqr1', 1, 99),
(3, 'a', 'err1afghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqr1', 1, 100),
(4, 'a', 'err2afghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqr1', 1, 100);
SQL语句:
select * from
(select con,group_concat(error SEPARATOR '
回复

使用道具 举报

千问 | 2007-4-24 20:58:43 | 显示全部楼层
')
from t1 where v=99
group by s) v1
left join
(select con,group_concat(error SEPARATOR '
回复

使用道具 举报

千问 | 2007-4-24 20:58:43 | 显示全部楼层
')
from t1 where v=100
group by s) v2
on v1.con=v2.con
执行结果:
"a","err1afghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqr1
回复

使用道具 举报

千问 | 2007-4-24 20:58:43 | 显示全部楼层
err2afghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefg",

"a","err1afghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqr1
回复

使用道具 举报

千问 | 2007-4-24 20:58:43 | 显示全部楼层
err2afghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefg"
但是单独执行left join左右的任意sql:
select con,group_concat(error SEPARATOR '
回复

使用道具 举报

千问 | 2007-4-24 20:58:43 | 显示全部楼层
')
from t1 where v=99
group by s
结果如下:
"a","err1afghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqr1
回复

使用道具 举报

千问 | 2007-4-24 20:58:43 | 显示全部楼层
err2afghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqrstuvwxyzabcdefghigklmnopqr1"
说明left join后,数据截断
如果更改t1表的error列类型为blob,则不会出现上面问题。
原因估计是vachar只支持255的数据长度,但为什么会截断?????
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行