2017-05-27 86 views
1

表:MySQL查詢返回0,當實際值不爲0

CREATE TABLE `test_table` (
    `id` int(10) UNSIGNED NOT NULL, 
    `field` varchar(255) COLLATE utf8_swedish_ci NOT NULL, 
    `value` text COLLATE utf8_swedish_ci NOT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_swedish_ci; 

INSERT INTO `test_table` (`id`, `field`, `value`) VALUES 
(1, 'first_name', '0'), 
(2, 'last_name', '0'), 
(3, 'first_name', '1'), 
(4, 'last_name', '1'); 

查詢:

SELECT MAX(`id`), `field`, `value` FROM test_table GROUP BY `field` 

要我理解這應該具有較高的ID返回每個字段的值。

但它的返回:

MAX(`id`) field   value 
3   first_name  0 
4   last_name  0 

它返回正確的ID,正確的字段,但錯誤的值。這裏發生了什麼,如何修復它以返回第3和第4行?

+0

你的理解是錯誤的。將返回一個隨機值。 –

+0

如何獲得最高ID的價值? – unska

回答

1
SELECT t.`id`, t.`field`, t.`value` 
FROM test_table t 
JOIN (SELECT MAX(`id`) AS `id`, `field` 
     FROM test_table 
     GROUP BY `field`) t1 ON t1.`id` = t.`id`