我有一个包含列的表:
col1 col2 col3 col4 entryId
1 2 abc 123 1
4 1 abc 234 2
4 2 abc 234 3
2 1 abc 456 4
2 2 abc 456 5
1 2 qwe 567 6
4 1 qwe 678 7
5 2 qwe 789 8
我需要一个mysql查询来检查给定的col4值。如果找到,则返回col2最大的行。如果未找到,则返回给定col3(abc)的最大col 1(然后是最大col2)的行。
示例:
如果搜索col4 = 456 AND col3 = abc,输出将为:2,2,abc,456,4
如果搜索col4 = 891 AND col3 = abc,输出将为:4,2,abc,234,3
答案 0 :(得分:3)
您应该使用ORDER BY
。
运行SELECT * FROM table WHERE col4 = 456 AND col3 = 'abc' ORDER BY col2 DESC LIMIT 1
。如果未找到记录,则运行SELECT * FROM table WHERE col3 = 'abc' ORDER BY col1 DESC, col2 DESC LIMIT 1
。
编辑:如果您只想使用一个SQL查询来执行此操作,则可以按照this answer使用UNION ALL
将这两者结合起来。
答案 1 :(得分:0)
ngValue
希望,它有效