2017-06-24 87 views
-2

试图添加if else条件后按子句添加限制。我必须根据条件包含限制。我正在尝试查询,但它会产生错误。不明白它有什么问题,请帮助!如果在mysql中的order by子句后添加,则会添加

我的查询:

select 
    date_format(CONVERT_TZ(session_start, @@session.time_zone, '+05:30'),'%d %b, %y - %h:%i %p') session_start 
FROM user_track 
WHERE user_track.id='xyz123' 
ORDER BY user_track.Sno DESC 
if(count(session_start) > 1,(limit 1,1),(limit 1)) 
+1

请勿使用无关标签发送垃圾邮件! –

+0

@MarcinOrlowski好的。 – Paramjeet

+0

可能的重复https://stackoverflow.com/questions/8763310/how-do-write-if-else-statement-in-a-mysql-query – joshuamabina

回答

0

的MySQL(和任何其他RDBMS)不允许这类的LIMIT子句中的逻辑。但一个解决办法可能是使用的行号变量设置为选择性地选择使用的第一条记录,或者第一个记录由一个偏移,即第二个记录:

SET @row_number = 0; 

SELECT t.session_start 
FROM 
(
    SELECT 
     date_format(CONVERT_TZ(session_start, @@session.time_zone, '+05:30'),'%d %b, %y - %h:%i %p') session_start, 
     (@row_number:[email protected]_number + 1) AS rn 
    FROM user_track 
    WHERE id = 'xyz123' 
    ORDER BY Sno DESC 
) t 
WHERE 
    t.rn = CASE WHEN (SELECT COUNT(session_start) FROM user_track 
         WHERE id = 'xyz123') > 1 
       THEN 2 ELSE 1 END 

请注意,我们需要计数移动到一个单独的WHERE子句中的子查询。我们无法在您的主要查询中计算它,这不是进行聚合。