【问题标题】:ORACLE SQL: Missing keywordORACLE SQL:缺少关键字
【发布时间】:2016-11-09 19:34:34
【问题描述】:

我的以下查询会引发错误消息“错误:ORA-00905:缺少关键字”,但适用于 SQLite。我找不到错误。

WITH subA AS (

SELECT customer.first_name, customer.last_name, customer.store_id, film_id from
    (SELECT customer_id, film_id from inventory join
        (SELECT rental.customer_id, rental.inventory_id from rental join
            (select customer_id, substr(first_name, 1, 1), substr(last_name, 1, 1) from customer where substr(first_name, 1, 1)  = substr(last_name, 1, 1)  AND customer.store_id = 2) as subResults
        on subResults.customer_id = rental.customer_id) as subResults2
    on inventory.inventory_id = subResults2.inventory_id) as finalsubR
join customer on customer.customer_id = finalsubR.customer_id

),

filmResults AS (

select * from (select title, rating, inventory.film_id, inventory_id from inventory join film on inventory.film_id = film.film_id) where rating = 'PG'

)

select distinct first_name, last_name, store_id from subA join filmResults on subA.film_id = filmResults.film_id ORDER by last_name

【问题讨论】:

  • Oracle 不支持AS 用于表别名。使用as finalsubR 而不是as finalsubR
  • 我应该改变什么?
  • 抱歉,复制和粘贴错误 ;) 删除 AS keyowrd: finalsubR 而不是 as finalsubR
  • 哦,这完美!谢谢

标签: sql oracle sqlite


【解决方案1】:

试试这个,..Oracle 不支持 AS 作为表别名。

WITH subA AS
       (SELECT customer.first_name
              ,customer.last_name
              ,customer.store_id
              ,film_id
        FROM   (SELECT customer_id
                      ,film_id
                FROM   inventory
                       JOIN (SELECT rental.customer_id
                                   ,rental.inventory_id
                             FROM   rental
                                    JOIN (SELECT customer_id
                                                ,SUBSTR(first_name, 1, 1)
                                                ,SUBSTR(last_name, 1, 1)
                                          FROM   customer
                                          WHERE  SUBSTR(first_name, 1, 1) = SUBSTR(last_name, 1, 1)
                                          AND    customer.store_id = 2) subResults
                                      ON subResults.customer_id = rental.customer_id) subResults2
                         ON inventory.inventory_id = subResults2.inventory_id) finalsubR
               JOIN customer ON customer.customer_id = finalsubR.customer_id)
    ,filmResults AS
       (SELECT *
        FROM   (SELECT title
                      ,rating
                      ,inventory.film_id
                      ,inventory_id
                FROM   inventory JOIN film ON inventory.film_id = film.film_id)
        WHERE  rating = 'PG')
SELECT   DISTINCT first_name
                 ,last_name
                 ,store_id
FROM     subA JOIN filmResults ON subA.film_id = filmResults.film_id
ORDER BY last_name

【讨论】:

    猜你喜欢
    • 2012-09-26
    • 1970-01-01
    • 2018-02-24
    • 2021-01-20
    • 1970-01-01
    • 1970-01-01
    • 2020-01-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多