所以下面的查詢,我使用產生4行:MySQL的怪異行爲,試圖使用MAX()彙總結果時
SELECT
`DMV`.`id` AS `dmvID`,
`D`.`id` AS `documentID`,
`DMV`.`name` AS `documentName`,
`U`.`username` AS `creatorUserName`,
`D`.`folder_id` AS `folderID`,
`D`.`created` AS `createDate`,
`SL`.`name` AS `statusName`,
`UM`.`username` AS `modifiedUserName`,
`DMV`.`version_created` AS `modifiedDate`,
`UO`.`username` AS `ownerUserName`,
`DTL`.`name` AS `documentTypeName`
FROM
`document_metadata_version` `DMV`
LEFT JOIN `documents` `D`
ON `DMV`.`document_id` = `D`.`id`
LEFT JOIN `users` `U`
ON `D`.`creator_id` = `U`.`id`
LEFT JOIN `users` `UM`
ON `D`.`modified_user_id` = `UM`.`id`
LEFT JOIN `users` `UO`
ON `D`.`owner_id` = `UO`.`id`
LEFT JOIN `status_lookup` `SL`
ON `D`.`status_id` = `SL`.`id`
LEFT JOIN `document_types_lookup` `DTL`
ON `DMV`.`document_type_id` = `DTL`.`id`
WHERE
DMV.document_id = 543433
;
爲了簡潔起見,我會忽略所有的不相關的領域不與手頭的問題有關。的dmvID
和documentTypeName
(第一和最後一列)的結果是:
+--------+------------------+
| dmvID | documentTypeName |
+--------+------------------+
| 566053 | Default |
| 566183 | Default |
| 681391 | ASCO Documents |
| 681411 | ASCO Documents |
+--------+------------------+
我只是在最後一排有趣的,所以很自然,我將修改SELECT語句上dmvID
使用MAX():
SELECT
MAX(`DMV`.`id`) AS `dmvID`,
# Rest of query unchanged
返回:
+--------+------------------+
| dmvID | documentTypeName |
+--------+------------------+
| 681411 | Default |
+--------+------------------+
注意從681411以上實際上是在MAX(),但相關documentTypeName
是不是dmvID
681411等值,我會假設它是它匹配dmvID
566053.我如何得到它返回:
+--------+------------------+
| dmvID | documentTypeName |
+--------+------------------+
| 681411 | ASCO Documents |
+--------+------------------+
,你只需要只有一行從這個整個查詢(即不會使用其他三)? – 2012-07-05 16:32:29
這是正確的,我只需要一個。 – Scott 2012-07-05 16:33:15