我在下面的table上有values:-
create or Replace table CourseLibrary (
Parent_code varchar(250),
Parent_Name varchar(250),
Course_Version varchar(250),
Course_Locale varchar(250),
Timestamp varchar(250)
);
Insert into Courselibrary values
('UXPUEMBR007', 'Back Injury Prevention', '1.0.004', 'en_US', '3'),
('UXPUEMBR007', 'Back Injury Prevention2', '1.0.002', 'en_US', '4'),
('UXPUEMBR007', 'Back Injury Prevention1', '1.0.004', 'en_BR', '5'),
('UXPUEMBR007', 'Back Injury Prevention', '1.0.003', 'en_US', '2'),
('UXPUEMBR007', 'Back Injury Prevention', '1.0.004', 'en_US', '1'),
('UXPUEMBR008', 'House Safety', '1.0.006', 'en_US', '1'),
('UXPUEMBR008', 'House Safety', '1.0.005', 'en_US', '1'),
('UXPUEMBR008', 'House Safety', '1.0.006', 'en_US', '2');
需要查询以筛选以下结果集:
('UXPUEMBR007', 'Back Injury Prevention', '1.0.004', 'en_US', '3')
('UXPUEMBR008', 'House Safety', '1.0.006', 'en_US', '2')
我需要一个给定的父代码行。如果有多个父代码,那么我必须查找最高的course\u版本,如果甚至course\u版本都相同,那么我只能查找course\u locale='en\u us'。如果两个语言环境相同,那么最后我必须检查最高的时间戳值。
注意:没有主键
priority:-1st highest 课程版本,第二课程语言环境=“en\u us”,第三时间戳
3条答案
按热度按时间abithluo1#
解决方案1:
解决方案2:
wrrgggsh2#
在mysql 8+中,您将使用
row_number()
. 在早期版本中,可以使用相关子查询,但这假定每行上都有一个唯一的标识符。因此,将表定义为:我还认为
timestamp
应存储为日期/时间值,而不是字符串。然后你可以做:
你真的不需要
CourseLibrary_Id
. 任何主键都可以。但是,您的表没有id,所以最好使用自动递增的id。lymnna713#