在我的 CakePHP 模型中,我试图从我的表中获取一些数据。
我尝试使用 DISTINCT,但似乎使用 DISTINCT 不会改变查询结果。
我可以看到许多行具有相同的缺口
与'DISTINCT Mytable.nick'
$this->Mytable->find('all',
array(
'fields'=> array(
'DISTINCT Mytable.nick',
'Mytable.age', 'Mytable.location',
),
'conditions' => array('Mytable.id >=' => 1, 'Mytable.id <=' => 100),
'order' => array('Mytable.id DESC')
));
与“组 Mytable.nick”
$this->Mytable->find('all',
array(
'fields'=> array(
'Mytable.nick',
'Mytable.age', 'Mytable.location',
),
'conditions' => array('Mytable.id >=' => 1, 'Mytable.id <=' => 100),
'group' => 'Mytable.nick',
'order' => array('Mytable.id DESC')
));
与“Mytable.nick”
$this->Mytable->find('all',
array(
'fields'=> array(
'Mytable.nick',
'Mytable.age', 'Mytable.location',
),
'conditions' => array('Mytable.id >=' => 1, 'Mytable.id <=' => 100),
'order' => array('Mytable.id DESC')
));
编辑:似乎即使 CakePHP 2.1 也不能使用 DISTINCT 选项。当我尝试“GROUP BY”时,它解决了我的问题。但正如您从我的查询中看到的那样,我需要对Mytable.id下降的结果进行排序。当我使用 GROUP BY 时,当 Mysql 找到相关行时,它不会占用其他行。例如。
- id=1,nick=mike,age=38,location=uk
- id=2,nick=albert,age=60,location=usa
- id=3,nick=ash,年龄=42,位置=uk
- id=4,nick=albert,年龄=60,位置=new_zelland
当我使用 时group Mytable.nick
,我没有在结果中看到第 4 行,而是看到了第 2 行。因为当mysql第二次看到“albert”时,它并没有把它放到我的结果中。但我需要最新的“阿尔伯特”结果。不可能吗?
Edit2:似乎 order by/group by 冲突是一个常见问题。我在这个问题中找到了一些提示。但它为本地 Mysql 查询提供了解决方案。我需要一个 CakePHP 类型查询的解决方案。