[英]Getting Different Different DISTINCT result in CakePHP query
我接受了答案。 但欢迎提出更多答案和建议。
我变得与众不同 - 在CakePHP查询中使用distinct时,MySQL结果不同。
我想做的是:获得date_generated字段的不同结果。
问题:查询1工作正常但是当我得到两个字段(date_generated,id)(参见查询2)时, 不同的结果不起作用。
查询1
$this->Purchase->find('all',array(
'order' => array('Purchase.date_generated ASC'),
'fields' => array('DISTINCT Purchase.date_generated')));
查询1的结果 :在此结果中, date_generated不重复且工作正常。 请查看查询2。
Array
(
[0] => Array
(
[Purchase] => Array
(
[date_generated] => 1970-01-01
)
)
[1] => Array
(
[Purchase] => Array
(
[date_generated] => 2014-06-17
)
)
[2] => Array
(
[Purchase] => Array
(
[date_generated] => 2014-06-18
)
)
[3] => Array
(
[Purchase] => Array
(
[date_generated] => 2014-06-19
)
)
[4] => Array
(
[Purchase] => Array
(
[date_generated] => 2014-06-22
)
)
[5] => Array
(
[Purchase] => Array
(
[date_generated] => 2014-06-29
)
)
[6] => Array
(
[Purchase] => Array
(
[date_generated] => 2014-08-01
)
)
)
查询2 :仅添加'Purchase.id'
$this->Purchase->find('all',array(
'order' => array('Purchase.date_generated ASC'),
'fields' => array('DISTINCT Purchase.date_generated','Purchase.id')));
查询结果2 :在此结果中数组索引5,6,7 date_generated重复。
Array
(
[0] => Array
(
[Purchase] => Array
(
[date_generated] => 1970-01-01
[id] => 9
)
)
[1] => Array
(
[Purchase] => Array
(
[date_generated] => 2014-06-17
[id] => 1
)
)
[2] => Array
(
[Purchase] => Array
(
[date_generated] => 2014-06-18
[id] => 2
)
)
[3] => Array
(
[Purchase] => Array
(
[date_generated] => 2014-06-19
[id] => 3
)
)
[4] => Array
(
[Purchase] => Array
(
[date_generated] => 2014-06-22
[id] => 4
)
)
[5] => Array
(
[Purchase] => Array
(
[date_generated] => 2014-06-29
[id] => 5
)
)
[6] => Array
(
[Purchase] => Array
(
[date_generated] => 2014-06-29
[id] => 6
)
)
[7] => Array
(
[Purchase] => Array
(
[date_generated] => 2014-06-29
[id] => 7
)
)
[8] => Array
(
[Purchase] => Array
(
[date_generated] => 2014-08-01
[id] => 8
)
)
)
这似乎是标准的sql行为。 第一个查询生成这样的东西
通过Purchase.date_generated ASC从采购订单中选择DISTINCT Purchase.date_generated
第二个产生这样的查询
通过Purchase.date_generated ASC从采购订单中选择DISTINCT Purchase.date_generated,Purchase.id
这些查询的结果正是您所获得的。 对于socond,它将返回不同的Purchase.date_generated和Purchase.id对。 因此,如果某个日期有几个购买ID,则每个购买ID都是不同的对。
因此,如果您仅在不同日期之后,则应使用第一个查询。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.