lihao812 发表于 2009-10-21 09:28:28

最近发现CI的$this->db->distinct(); 貌似没什么意义!

$this->db->distinct();
好像不支持参数,

$this->db->distinct('ID');

结果 还是 SELECT distinct * FROM TABLE

结果还是用 select了

$this->db->select('DISTINCT(TEAMID)');

Hex 发表于 2009-10-21 10:39:35

用的什么数据库?

lihao812 发表于 2009-10-22 14:25:36

mssql 数据库

visvoy 发表于 2009-10-22 15:55:02

{:3_46:}我有个ci+mssql项目好几个地方都用到ar distinct,方便的很

kazaff 发表于 2009-10-22 20:06:23

就是哦~~貌似不理解这个方法~

kazaff 发表于 2009-10-22 20:14:26

刚才测试了一下sql语句,发觉这个东东貌似作用也仅仅是屏蔽掉重复值的列~
如果你的表有主键,而且你select的值里也要包含这个主键的话,它本身就没多大意义啊~
除非你只输出个别列值~
我测试的mysql中:
SELECT id,distinct name,price FROM `orders` WHERE 1; //这是语法错误
SELECT distinct * FROM TABLE ;//这没有意义

呵呵~

lihao812 发表于 2009-10-23 16:00:14

$this->db->select('DISTINCT(TEAMID)');
这句结果是 SELECT distinct(TEAMID) FROM TABLE
只能这样用了.懒的改 ar了...

zhangtao-5 发表于 2009-10-23 17:39:03

:):):):victory:

visvoy 发表于 2009-10-23 18:50:00

屏蔽重复的列,单单这个用程序控制就要花费很多额外开销,而数据只要一个distinct就解决了

像模糊查询,查询结果很可能存在多个相同的列,用程序控制就要写冗长的循环检测,即增加了工作量又降低了执行效率,这种事只是简单的执行一个 distinct 就搞定了

如果distinct真的没有意义,那为什么这些SQL开发商没有去掉它呢?

visvoy 发表于 2009-10-23 18:53:30

我测试的mysql中:
SELECT id,distinct name,price FROM `orders` WHERE 1; //这是语法错误
SELECT distinct * FROM TABLE ;//这没有意义...
kazaff 发表于 2009-10-22 20:14 http://codeigniter.org.cn/forums/images/common/back.gif
语法用错了,应该是 SELECT distinct name,id,price FROM `orders`
页: [1] 2
查看完整版本: 最近发现CI的$this->db->distinct(); 貌似没什么意义!