thinkphp6 distinct的bug?

浏览:826 发布日期:2021/01/14 分类:ThinkPHP6专区 关键字: thinkphp6 mysql bug
今天碰到查询表的时,如果用别名,配合到加上distinct会出现查不到数据的情况。

php版本: 7.2.34
thinkphp版本: v6.0.5

数据表:CREATE TABLE `shj_test_ss` (
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
    `username` varchar(60) NOT NULL DEFAULT '' COMMENT '账号',
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='账号表';
添加测试数据:
INSERT INTO `shj_test_ss` VALUES ('1', 'Walter');
INSERT INTO `shj_test_ss` VALUES ('2', 'Nanson');
INSERT INTO `shj_test_ss` VALUES ('3', 'Walter');
// 这个可以查出数据
$result = \think\facade\Db::connect()
    ->name('test_ss')
    ->column('distinct username');
echo '数量: ' . count($result) . PHP_EOL;   // 2
echo 'sql: ' . \think\facade\Db::connect()->getLastSql() . PHP_EOL; // SELECT distinct username FROM `shj_test_ss`

// 加一个别名就会查不到数据
$result = \think\facade\Db::connect()
    ->name('test_ss')
    ->alias('t')
    ->column('distinct t.username');
echo '数量: ' . count($result) . PHP_EOL; // 0
echo 'sql: ' . \think\facade\Db::connect()->getLastSql() . PHP_EOL; // SELECT distinct t.username FROM `shj_test_ss` `t`
exit;
这样的问题就是,如果需要连表,通过字段去重就会出现查不到数据情况
最佳答案
评论( 相关
后面还有条评论,点击查看>>