English 中文(简体)
ORA-00905: Trouble改划Mysql/MMSQL syntax
原标题:ORA-00905: Trouble converting Mysql/MMSQL syntax to oracle syntax

我很麻烦地把下文关于甲骨质的行文编成文。 不清楚为什么——将错误改为:

ORA-905 错误——遗漏关键词

在劳动和社会保障部和劳动和社会保障部的劳动报酬。

关于如何确定标准的任何指示都将受到高度赞赏。

SELECT product.productId, product.version
 FROM product 
INNER JOIN (SELECT productId,
                   MAX(version) AS MaxVersion
              FROM product
          GROUP BY productId) AS vTbl ON product.productId= vTbl.productId 
                                     AND product.version= vTbl.MaxVersion
最佳回答
SELECT
  product.productId, product.version
FROM
    product JOIN
    (
            SELECT
                    productId,
                    MAX(version) AS MaxVersion
            FROM
                    product
            GROUP BY productId

   ) vTbl ON
                product.productId= vTbl.productId AND
                product.version= vTbl.MaxVersion
问题回答

这只是提出质问和表明问题(Micheal回答了这一问题):

AS  VTBL

只需要

VTBL 

......

WITH product AS(
 SELECT 1 productId, 2 version FROM DUAL
 union
 SELECT 2 productId, 2 version FROM DUAL
 UNION
 SELECT 3 productId, 3 version FROM DUAL
 union
 SELECT 2 productId, 6 version FROM DUAL
 UNION
 SELECT 3 productId, 4 version FROM DUAL
 UNION
 SELECT 4 productId, 5 version FROM DUAL 
)
SELECT
       PRODUCT.PRODUCTID, 
   product.version
    FROM
            PRODUCT 
    INNER JOIN
            (
                    SELECT
                            productId,
                            MAX(version) AS MaxVersion
                    FROM
                            product
                    GROUP BY productId

           ) /*as*/  VTBL ON
                        product.productId= vTbl.productId AND
                        product.version= vTbl.MaxVersion;

我倾向于明示,这样我就离开了INNER JOIN,但Michael s response是正确的(因为他删除了AS)。

俄空局投下这一错误

ORA-00905: missing keyword
00905. 00000 -  "missing keyword"
*Cause:    
*Action:

(11g r1测试)

其他答案是正确的,但如果你想利用Oracle,你可能希望利用分析功能。 这种方法只需要一个表扫描,而不是两个表:

select productId, maxVersion
from
(
  select product.productId, version
    ,max(version) over (partition by productId) maxVersion
  from product
)
where version = maxVersion;




相关问题
Export tables from SQL Server to be imported to Oracle 10g

I m trying to export some tables from SQL Server 2005 and then create those tables and populate them in Oracle. I have about 10 tables, varying from 4 columns up to 25. I m not using any constraints/...

Connecting to Oracle 10g with ODBC from Excel VBA

The following code works. the connection opens fine but recordset.recordCount always returns -1 when there is data in the table. ANd If I try to call any methods/properties on recordset it crashes ...

How to make a one to one left outer join?

I was wondering, is there a way to make a kind of one to one left outer join: I need a join that matches say table A with table B, for each record on table A it must search for its pair on table B, ...

Insert if not exists Oracle

I need to be able to run an Oracle query which goes to insert a number of rows, but it also checks to see if a primary key exists and if it does, then it skips that insert. Something like: INSERT ALL ...

How can I store NULLs in NOT NULL field?

I just came across NULL values in NOT-NULL fields in our test database. How could they get there? I know that NOT-NULL constraints can be altered with NOVALIDATE clause, but that would change table s ...

Type reference scope

I m studying databases and am currently working on a object-relational DB project and I ve encountered a small problem with the number of possible constraints in an object table. I m using "Database ...

OracleParameter and DBNull.Value

we have a table in an Oracle Database which contains a column with the type Char(3 Byte). Now we use a parameterized sql to select some rows with a DBNull.Value and it doesn t work: OracleCommand ...

热门标签