2015-07-10 81 views
0

我使用以下查询从mysql表中检索信息。将MySQL查询转换为Informix

SELECT ACCESS_TOKEN, 
     AUTHZ_USER, 
     TOKEN_SCOPE, 
     TOKEN_STATE, 
     REFRESH_TOKEN_TIME_CREATED, 
     REFRESH_TOKEN_VALIDITY_PERIOD, 
     IDN_OAUTH2_ACCESS_TOKEN_SELECTED.TOKEN_ID 
FROM 
    (SELECT ACCESS_TOKEN, 
      AUTHZ_USER, 
      TOKEN_STATE, 
      REFRESH_TOKEN_TIME_CREATED, 
      REFRESH_TOKEN_VALIDITY_PERIOD, 
      TOKEN_ID 
    FROM IDN_OAUTH2_ACCESS_TOKEN 
    WHERE CONSUMER_KEY = "" 
     AND REFRESH_TOKEN = "" 
    ORDER BY TIME_CREATED DESC 
    LIMIT 1) AS IDN_OAUTH2_ACCESS_TOKEN_SELECTED 
    JOIN IDN_OAUTH2_SCOPE_ASSOCIATION 
WHERE IDN_OAUTH2_ACCESS_TOKEN_SELECTED.TOKEN_ID = 
IDN_OAUTH2_SCOPE_ASSOCIATION.TOKEN_ID; 

如何在具有相同表的Informix数据库中获得相同的结果?

+1

ANSI SQL需要对每个JOIN,但在这里,你有一个相反。只要将最后的WHERE更改为ON即可。 – jarlh

+0

它的工作,添加了一个答案。 –

回答

2

同样可以通过将 'LIMIT 1' 到 'FIRST 1' 和 '位置' 的加入到 'ON' 来完成,

SELECT ACCESS_TOKEN, AUTHZ_USER, TOKEN_SCOPE, TOKEN_STATE, 
     REFRESH_TOKEN_TIME_CREATED, REFRESH_TOKEN_VALIDITY_PERIOD, 
     IDN_OAUTH2_ACCESS_TOKEN_SELECTED.TOKEN_ID 
    FROM (SELECT FIRST 1 ACCESS_TOKEN, AUTHZ_USER, TOKEN_STATE, 
       REFRESH_TOKEN_TIME_CREATED, REFRESH_TOKEN_VALIDITY_PERIOD, 
       TOKEN_ID 
      FROM IDN_OAUTH2_ACCESS_TOKEN 
     WHERE CONSUMER_KEY = "" AND REFRESH_TOKEN = "" 
     ORDER BY TIME_CREATED DESC) AS IDN_OAUTH2_ACCESS_TOKEN_SELECTED 
    JOIN IDN_OAUTH2_SCOPE_ASSOCIATION 
    ON IDN_OAUTH2_ACCESS_TOKEN_SELECTED.TOKEN_ID = IDN_OAUTH2_SCOPE_ASSOCIATION.TOKEN_ID;