Mysql – SQL retrieve last elements of table using group by like behaviour

distinctgroup byinnodbMySQL

I am trying without success to retrieve the last version of all articles in a table.

The table structure:

CREATE TABLE `journalarticle` (
  `uuid_` varchar(75) DEFAULT NULL,
  `articleId` varchar(75) DEFAULT NULL,
  `version` double DEFAULT NULL,
  PRIMARY KEY (`uuid_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

example values:

'abd7e646-07a7-471d-bbdf-5465b1129cc9', '10741', '1'
'0554b837-41c1-41ef-9075-76e2691568aa', '10795', '1'
'2bbd552b-b070-4557-9c61-87949a454693', '10840', '1'
'eaa4f204-0074-413f-be33-a0e973154b33', '10849', '1'
'4e43f459-f78e-42f6-a998-094fc1969950', '10876', '1'
'8ffa3d8d-32c5-4026-827a-6b65ecc85b48', '10885', '1'
'50c9ba13-59cb-4fac-a5f4-29a6d7445020', '10885', '1.1'
'5b172a31-bcc8-4631-b206-b597e8c9df84', '10849', '1.1'
'ed463a78-42db-41c1-8d42-da9226964e23', '13014', '1'
'dc1a3359-a564-4fad-8810-143f853d7e5b', '13028', '1'
'edadb83a-d481-491d-9fae-0a1d1061ba27', '13039', '1'
'ec33fd95-aede-4914-9db1-81de49464cc7', '13050', '1'
'2f56fad4-cfd4-4831-9fd9-bf64647130a2', '13064', '1'
'29b79d7f-cd99-4707-8955-346b7219319e', '13551', '1'
'18ba3e99-f392-4fe1-bb08-60155b3da219', '10876', '1.1'
'9728920d-d7f0-40dc-952a-b22ebcf19f83', '10876', '1.2'
'e4198e4a-f155-41ae-a320-fa35b35a5198', '13644', '1'
'6b9b9806-835d-44a5-b7c7-87fbb1c0a253', '13804', '1'
'af499196-1cfa-484a-a2d6-9b8e1001add0', '13942', '1'
'5a07ba8d-2100-406b-a73d-6d1e16130a0e', '14402', '1'
'e18999f6-0d0e-4cbb-87f2-ee23b5931418', '14402', '1.1'
'7256ff36-07b6-43c5-a8ff-e5a9b865532e', '14604', '1'
'56f48da4-9680-425f-9721-99d8e867dfcb', '14801', '1'
'996c6dc4-3d01-48b7-872c-b2e27a2fed0b', '14801', '1.1'
'5923f5d5-8a01-4022-9970-3acc94b676e0', '14801', '1.2'
'4ff02782-04ba-4ebc-a025-452ce2723824', '15191', '1'
'8b619e51-f059-4208-bc52-24131d177f09', '15202', '1'
'adc61daa-f9e5-437d-a5c0-f797b842cd2e', '15447', '1'
'51a51af5-1093-43cf-81b2-61ac2dba3509', '15458', '1'
'19f2e840-0af3-466a-88c7-147cb9a2dabb', '15469', '1'
'11831f58-9523-4205-935b-1144d9a05bdb', '15480', '1'
'9c727117-4bbd-4971-a6c2-f3121b08ac0c', '15491', '1'
'abe057ff-1144-4ae9-a4da-8b6c713961d0', '15502', '1'
'd42a30c2-0e4b-4255-9eb4-41d93bc89613', '15513', '1'
'cbb0de6a-dc97-4f33-a74c-ecd035c05de0', '15524', '1'
'45bed498-088a-4dfe-948f-fa0027232c4c', '15535', '1'
'57420368-c7a9-40b4-a150-b682711bd39e', '15546', '1'
'3b6a8703-b535-42cc-a05a-d1f7cd82088c', '15557', '1'
'8cf5828b-6462-4810-972a-40c64c6d6ea1', '15568', '1'
'a2aea3be-aa3d-41b7-9b6d-3c2dad341625', '15579', '1'
'b5ef818b-2e84-4bc3-883e-87fa51b63347', '15590', '1'
'5637b6d0-2e5e-4de5-92b4-70bacabb4643', '15601', '1'
'206fd51f-cc28-4e37-97a0-ea1dc236799f', '15612', '1'
'283b5158-a441-472b-a953-0a380a7606bd', '15623', '1'
'14b58179-a6ad-45dd-bf2a-ac030958d77a', '15634', '1'
'056037d6-8f4e-4a5c-877c-290bcbcb8b14', '15645', '1'
'7240af6e-366f-493f-9fbd-93fa5f9fd11f', '15656', '1'
'94f1cb03-d006-4157-8e28-01e9d114b35e', '15667', '1'
'6db26bc2-f6aa-4ee1-9ea9-27fb4682601d', '15678', '1'
'b8c0121b-428b-4df9-9ba7-a8985f379924', '15689', '1'
'b0d62cc7-4335-4100-9a1c-7c46a6e5b210', '15700', '1'
'4c2e2b9f-362c-482f-8560-1ee47f05b872', '15711', '1'
'3a011d0d-8265-4cea-bbfd-e2fd98021c65', '15722', '1'
'84a22809-bf32-4823-9f16-a7174ce26eb1', '15733', '1'
'03619589-9255-410e-b1eb-0c5990878349', '15744', '1'
'ab828381-40b4-4e4a-9636-5d22e95b9b2e', '15755', '1'
'0b904d52-1246-497c-a1d4-cd2ca4ba9cdf', '15766', '1'
'12274b29-5deb-4776-81c3-b78a08f7bdf5', '15777', '1'
'a5329548-1b38-4af5-a34e-ba3e2b0e0a40', '15788', '1'
'9c3b33f9-eaed-49f1-9ac6-5d25bb34a0bc', '15799', '1'
'f0c8f350-a8ff-4d2f-9255-5336b9eb899d', '15810', '1'
'b54c771f-866e-411c-89dc-babc157fa1b6', '15821', '1'
'c961d323-4b30-4559-9b7f-422559fe8c2e', '15832', '1'
'd486467f-058d-4620-91ac-271034d9b902', '15843', '1'
'78ac9e16-52a1-4427-8a75-8430dc9e1bb9', '15854', '1'
'e5d7ad51-bb19-43e2-b977-479a0cec9882', '15865', '1'
'6e230dbd-5ff7-4974-a482-9f7af2f75339', '15876', '1'
'1b827966-e4eb-4d37-96a4-f1c82c3722bc', '15887', '1'
'398033ec-888c-4ad2-9d58-ab4bdb5cbc01', '15898', '1'
'fc49c8b7-a641-4b7f-b39a-51672942b25a', '15909', '1'
'b669ba8d-973b-4453-8661-e602d696dba4', '15920', '1'
'74f7965d-f029-4cc3-9a24-03364573f769', '15931', '1'
'6097c163-1273-4d61-be96-1bb0c5776818', '15942', '1'
'e303ff56-3511-409b-818f-87395e785588', '15953', '1'
'c182e079-6bca-427b-8de7-8686790193ac', '15964', '1'
'6e6304fc-e946-4075-940f-082a58646260', '15975', '1'
'b16661f8-2b70-4919-bb92-b7fc20295434', '15986', '1'
'8ce568a4-7f5f-4839-9a5d-9e149872371c', '15997', '1'
'2314584a-8023-437f-9612-39fefb34cd28', '15480', '1.1'
'98cc4e4b-833e-4575-bbfc-3b24e9526a12', '15491', '1.1'
'91633223-d19f-409e-bf5b-a21d48d3a9e4', '15502', '1.1'
'032a027e-af40-45ed-9658-f8eca80bbd8e', '15513', '1.1'
'c891f465-c9e0-4c4c-980d-92050ad67d36', '15524', '1.1'
'2a2b8cd5-9e74-426b-b747-15e43ef12e4b', '15535', '1.1'
'7c01fe8f-a447-47bb-9bf1-53be5b08dc35', '15546', '1.1'
'2e791183-ae35-4a5f-82cc-3b50d3f3b253', '15557', '1.1'
'78660494-fd1e-495e-8915-15918e9f2caf', '15568', '1.1'
'9de2b645-2b19-4ea0-90e4-be220ccba3e2', '15579', '1.1'
'b0a04b4d-5f80-4d16-a6a3-cd1f6ff022f3', '15590', '1.1'
'0eba8f8d-70ab-44e9-92ff-cc2ee9ee108d', '15601', '1.1'
'647508c9-9740-473b-a7fb-4df3de59eb7d', '15612', '1.1'
'c94f530d-b025-4dd2-b034-802e51333c26', '15623', '1.1'
'3987e630-bab8-4b81-b2cf-35dd1bbefeb9', '15634', '1.1'
'22f21802-e12c-4f5f-83d2-2c8fda471877', '15645', '1.1'
'9316181e-eea4-4b38-a682-d531e7a3754a', '15656', '1.1'
'70b3beef-073a-4b28-bdf1-3e950c50c730', '15667', '1.1'
'55bde2d8-19e8-4598-8192-cecb11588689', '15678', '1.1'
'8819baeb-adec-434b-9a81-57c138bb47b3', '15689', '1.1'
'd48b3843-7485-4a55-a100-2c294d2fe16a', '15700', '1.1'
'1eef217d-adcd-4049-ad36-3b892cb9b15a', '15711', '1.1'
'2e47f35e-680c-435a-9d8e-b3eb54b3507b', '15722', '1.1'
'7ba0651b-d74f-4cfe-969c-cad8a70f88b8', '15733', '1.1'
'ba44712b-ca43-4245-abb9-6e1c4b72a298', '15744', '1.1'
'94e96097-a664-4891-b498-8fb454b6e6d2', '15755', '1.1'
'b934aefc-8784-4ef2-b923-051eebc41061', '15766', '1.1'
'afcda60a-7e34-4ade-b6a8-6252bbc107a4', '15777', '1.1'
'd6651938-bca5-4c6a-8ce3-38e452978d7f', '15788', '1.1'
'3d9cae0b-9287-418e-864a-887be2aafdb6', '15799', '1.1'
'1ec80b65-8334-4c6d-b692-99885b12348c', '15810', '1.1'
'1ca2615c-cae4-4a96-ac06-9bcef70b507f', '15821', '1.1'
'c5eadb58-5046-44eb-91c5-554db0272938', '15832', '1.1'
'ad3bb5bc-a7aa-4a47-ab2a-68a67fea0527', '15843', '1.1'
'7044633a-5b3b-41c6-9021-953cfc5b7cec', '15854', '1.1'
'9c312d13-c30d-4ade-96fc-51cfd2e60262', '15865', '1.1'
'e1242985-fb66-4fa2-8f1b-3683323331ba', '15876', '1.1'
'5afb67a3-a5c8-4016-9b77-07b8fd8cf99c', '15887', '1.1'
'ba547858-93ad-424a-8f38-b5e86b6fcaa0', '13014', '1.1'
'75952cc6-1ac2-45c9-9dd0-526a0e88882f', '13028', '1.1'
'a32fbac2-75de-403c-bf99-3f323122b956', '13050', '1.1'
'46fb90c4-10de-4e20-95c2-befb0597d54e', '13064', '1.1'
'a6c13d0c-1caa-4292-a385-73f19103cfb5', '13551', '1.1'
'ddbf0d57-0ba0-4ccd-bb08-02fb8e1e9a49', '13644', '1.1'
'0e256631-12e4-4723-a46d-d39a607d9ef0', '14402', '1.2'
'4e05e19f-fa20-456a-a66b-bafcc306bffb', '14604', '1.1'
'a6602327-4fb4-4ab3-9f0b-7e1d9a31516d', '15191', '1.1'
'9ef9eeaa-b168-4da7-be3c-0d25321ca1db', '15202', '1.1'
'bd1360ff-015f-4a33-97da-575d7cc8470a', '17303', '1'
'78b545c2-9252-45d0-8e0b-c506358e1b8d', '17317', '1'
'e2f91f42-8af4-4d47-bb5f-4e49f6d6bd72', '15202', '1.2'
'ef7c8fe3-eeca-4a68-ac55-8c9b73068858', '15191', '1.2'
'a500f8ac-9d29-42d7-b0b9-1783ca832b90', '14604', '1.2'
'5df51d24-2479-44da-8c0d-35fc6910d034', '14402', '1.3'
'46fd4b0b-a415-430f-9d48-c7e6847d28e5', '13644', '1.2'
'6fccee68-2967-4926-a65b-635cd781c26d', '13050', '1.2'
'72f4ec77-26d6-4b30-998d-c2cb0051107e', '13028', '1.2'
'aaedafc5-1a77-49de-a738-376f7bf71cea', '13039', '1.1'
'be60b8ce-edb6-4046-9d24-e27e3d9f47b1', '15191', '1.3'
'b5303021-b9ab-415c-b025-6a762f742c76', '17380', '1'
'7c47cae4-6f83-428e-a954-dd668ccda0fb', '17901', '1'
'36796afe-e746-4e0f-a9b7-9eb518924059', '17380', '1.1'
'a0940d71-aab5-47d5-b317-467ead926ffb', '18026', '1'
'8e2f25ca-2d18-4279-81f7-aaf1ad74c197', '18833', '1'
'a965e37b-ec6b-41d5-94fb-8f0a283fee7d', '18844', '1'
'68a4d82d-c503-47ba-9ea8-fcc703c3fb47', '18844', '1.1'
'3c6eee98-449e-4c73-92bc-b86926fad0f4', '19441', '1'
'8721a77f-e190-422c-82b6-e38035225754', '19463', '1'
'b756064d-8207-4a53-8a22-230360635361', '19474', '1'
'6e3a8005-2d72-4acf-9337-f9c49a2f92ef', '19485', '1'
'c6755a4d-33dd-4868-a1d0-a204faf25f91', '19707', '1'
'4ab845bc-7a0d-4ec2-a431-be3562c27d58', '19718', '1'
'1e99006e-1f11-4d42-80e1-2445b30ea7fd', '19729', '1'
'6ddf42b3-0d94-4c61-9757-132d28ea8501', '19740', '1'
'96e405f8-2812-4140-aed3-81b3e5494197', '19751', '1'
'10faef1c-4b28-4a87-b553-520243f3d5ab', '19773', '1'
'f9f7f6d6-52c5-41fe-a7ad-08988d4f80bf', '19795', '1'
'5e0fff5b-86da-4c5a-bf25-07859bafcf9e', '19806', '1'
'5071a928-bb6e-45f7-b668-5d2f092d8a46', '19817', '1'
'de328e4a-88d6-4beb-993b-d836a95f9018', '19828', '1'
'58db9cea-a181-46b9-9788-45135d4df180', '19839', '1'
'f9acc61d-a9ab-4395-a14f-1549a54e7284', '19850', '1'
'a24a259c-5236-4605-b389-2d9aff7c3fe9', '19861', '1'
'3ad13b96-edc4-4036-8abf-f960eaa1ec6e', '19872', '1'
'599f6020-fa6e-4d61-af3c-4bf360de8b6b', '19883', '1'
'6364fdca-b90d-4502-815a-29d414891860', '19894', '1'
'403d6835-233d-4b5e-aca6-e225ee2870e5', '19905', '1'
'629e5448-0fdf-48f3-a717-325d09247b0f', '19916', '1'
'8f52e7b3-8c8e-47e0-b49a-73fd53dacadd', '19938', '1'
'6ebc317d-c6bf-450a-8265-61392859fef9', '19949', '1'
'45c3e9c3-8af7-48c6-a937-86a2510ec065', '19960', '1'
'd0bdec0e-8253-4fb6-b72c-6ef8f7b41857', '19971', '1'
'f72b0de8-a3de-4727-b923-fecd5c5e183e', '19982', '1'
'421aa54d-76dc-4d07-9d45-0ef7850d4dc0', '19993', '1'
'78b3c667-82be-4365-8438-f52cbcec2119', '20004', '1'
'c4b1d098-0d3b-4c7c-8e2d-19245eb23b29', '20015', '1'
'b5ffa8c4-f375-4ec2-aa65-15ff492bdd4f', '20026', '1'
'a495384b-9cf8-4cb2-ac25-74223efdbb1e', '20037', '1'
'1218ea03-d8c0-48c6-87bf-b790ed536978', '20048', '1'
'32e95282-45f6-4f33-b9cb-b5c8d94c0acb', '20070', '1'
'498efb39-5d45-48ab-8c8c-666a1e52c4ef', '20070', '1.1'
'bd1ce4df-e9c4-4dc1-bcb7-2a0cfc952e0a', '20048', '1.1'
'ca1730da-ca80-451b-97f7-e73a60aa2e0f', '20037', '1.1'
'a5fdbaf4-ebcb-402c-a7de-8c18f50b74e7', '20026', '1.1'
'd6e129be-e8e5-4636-811b-21a0a84b5b23', '20015', '1.1'
'c11cd8b8-aee2-44ab-b591-389677ca53c0', '20015', '1.2'
'666cf731-5d82-4e5b-9404-02776b46ba82', '20004', '1.1'
'8d4b270d-11a8-45a1-b676-5c49995655dd', '19993', '1.1'
'f802dcdc-37e7-436b-aaa9-f324184da772', '19982', '1.1'
'4cf241b1-1f82-4bdf-870b-4701d7cd8ea7', '19982', '1.2'
'08d5b7e0-78e1-4abb-8dc5-a809950cf631', '19971', '1.1'
'8809df7d-970e-4e25-88b0-f9faf3cf40cb', '19960', '1.1'
'449d07ec-619e-4453-8f8f-60538ca76b02', '19960', '1.2'
'1df0deb4-1ac1-4999-8e1f-65a8667db95e', '19949', '1.1'
'ce8b0a93-cf63-473b-816e-660469e90741', '19938', '1.1'
'31bd408d-75ba-411a-8062-13589260a827', '19916', '1.1'
'61fd3a51-21cb-43b3-bc7a-13d2f5b79ec9', '19905', '1.1'
'dea25bd6-fcf9-4407-a030-9846dbba03a3', '19905', '1.2'
'ecb294d6-6429-4197-90f7-09c16ab67e3d', '19894', '1.1'
'81e5ab6c-ed91-44e5-acdf-6112ca51a6e2', '19883', '1.1'
'7b7fa67c-3fbb-47bf-b36e-dd9e7cf4c475', '19872', '1.1'
'8bdd358e-e4fb-434f-a336-6d28370acb0c', '19861', '1.1'

I need to get the latest version of each article.
For exemple:

'50c9ba13-59cb-4fac-a5f4-29a6d7445020', '10885', '1.1'
...
'449d07ec-619e-4453-8f8f-60538ca76b02', '19960', '1.2'

I've tried without success an having condition:

SELECT articleId, version, MAX(version) as v
FROM mf3_liferay.journalarticle 
GROUP BY articleId 
HAVING version = v
ORDER BY articleId DESC;

When I do:

SELECT COUNT(*) FROM (
SELECT articleId
FROM mf3_liferay.journalarticle 
GROUP BY articleId 
ORDER BY articleId DESC) as articles

I get 2427 records

When I do:

SELECT COUNT(*) FROM (
SELECT articleId, version, MAX(version) as v
FROM mf3_liferay.journalarticle 
GROUP BY articleId 
HAVING version = v
ORDER BY articleId DESC
) as articles

I get 191 records

When I do:

SELECT COUNT(*) FROM (
SELECT articleId, version, MIN(version) as v
FROM mf3_liferay.journalarticle 
GROUP BY articleId 
HAVING version = v
ORDER BY articleId DESC
) as articles

I get 2427 records

I need to get the same number of result in either cases… How Can I get the last version of each articles?

I've tested that answer from oNare with success:

select ja.* 
from mf3_liferay.journalarticle as ja,
(
    SELECT 
        SUBSTRING_INDEX(GROUP_CONCAT(uuid_ ORDER BY version DESC),',',1) AS uuid_LastVersion
    FROM mf3_liferay.journalarticle 
    GROUP BY articleId
) as uuids
where uuids.uuid_LastVersion = ja.uuid_

Best Answer

To retrieve the ArticleID and its latest version, you can use this query:

SELECT articleId, MAX(version) FROM journalarticle GROUP BY articleId;

If you need to get all field from the table, you can use this query:

SELECT * FROM journalarticle 
WHERE CONCAT(articleId, "##", version) IN 
    (SELECT CONCAT(articleId, "##", MAX(version)) 
    FROM journalarticle 
    GROUP BY articleId);

The usage of "##" is to avoid confusion is cases where

(articleId, Version) = ("32111", "2"), or ("3211", "12")