我可以在oracle数据库中使用公用表表达式进行更新吗?
当我尝试这样做时,我得到了错误的ORA-00928: missing SELECT keyword:
with average as (SELECT avg(salary) FROM instructor)
update instructor
set salary = case
when salary <= average then salary * 1.05
else salary * 1.03
如何在Java中使用Oracle的with子句执行查询。例如,用于
with TEST as (
select 1 from dual
)
select * from TEST
我试过了,但我得到了java.sql.SQLException: ORA-00928: missing SELECT keyword
我想使用WITH子句创建表格-例如,这样做: With t1 as ( select a, b, c from x1 )
, t2 as ( select p, q, r from x2 )
create table T as
select a,b,c,q,r
from t1 join t2 on t1.a = t2.p
; 但是当我执行这段代码时,我得到了ORA-00928 当然,我的查询比较复杂,但当我在没有create table的情况下执行它时,它是有效的…。。问题出在哪里?
我正在尝试使用合并,我可以看到以下错误
ORA-00928:缺少SELECT关键字
merge into table using(select * from table on val = val1)
when matched then
(update set
val2 = val3 where val = val1)
when not matched then
(Insert query)
我错过了什么?
我正在尝试一个使用CTE(公用表表达式)的简单merge语句。但是它给出了一个错误
MERGE INTO emp targ USING (
*
ERROR at line 4:
ORA-00928: missing SELECT keyword
merge语句中是否不允许使用CTE?我的Sql如下:
WITH cte AS (
SELECT empno, ename
FROM EMP)
MERGE INTO emp targ USING (SELECT *
FROM cte) src
ON (targ.empno
在PostgreSQL9函数的迁移过程中,遇到了以下问题:在Oracle中,您只能在复杂的select语句中使用WITH。同时,在postgres (和MS SQL2008)中,你可以同时使用WITH和INSERT (更新,删除)。
示例:
WITH prerows AS ( SELECT ObjectID, LoginID, Param FROM devices D
WHERE D.DevNum = '0003' AND ObjectID IS NULL )
INSERT INTO dev_sub( Ob
尝试执行此操作(适用于SQL Server):
WITH X AS (), Y AS (), Z AS ()
DELETE FROM TBL
WHERE TBL.ID IN (SELECT ID FROM Z);
这在Oracle中有效:
WITH X AS (), Y AS (), Z AS ()
SELECT * FROM TBL
WHERE TBL.ID IN (SELECT ID FROM Z);
但DELETE没有: ORA-00928:缺少SELECT关键字
我的子查询相当大,有没有不同的语法来让它工作?
我有以下SQL语句,它没有在我的DB2数据库上运行:
WITH a AS (
SELECT * FROM sysibm.systables
)
SELECT a.* FROM a
FETCH FIRST 10 ROWS
如果没有FETCH语句,它就能工作。我得到的错误消息是:
非法使用关键字优化,令牌ERR_STMT WNG_STMT获取SAVEPOINT免费关联。
有什么建议吗?
我读过,它的语法是这样的:
INSERT
WHEN ([Condition]) THEN
INTO [TableName] ([ColumnName])
VALUES ([VALUES])
ELSE
INTO [TableName] ([ColumnName])
VALUES ([VALUES])
SELECT [ColumnName] FROM [TableName];
但是我不想提供来自另一个表的值。我只想输入它们,所以我得到:
INSERT
WHEN EXISTS (SELECT 1 FROM FOO WHERE NAME = 'JOE')
THEN
INTO BAR
我用sqlalchemy生成的查询来面对oracle错误ORA-00928: missing SELECT keyword。这个问题已经描述过了,并回答了。
我的查询如下所示:
WITH table2 (id) AS (
SELECT id
FROM table3
)
UPDATE table SET id=1
WHERE EXISTS (
SELECT *
FROM table
WHERE id IN (SELECT id FROM table2)
)
并通过下面的代码生成:
table2 = session.query(table3.id).
我试图做一个本质上非常简单的任务,其结果是:
ORA-00928:缺少SELECT关键字
我所要做的就是将来自periods的结果保存到表globalTable中。选择工作正常(我返回行),但是,一旦我用Insert替换它,我就会得到上面的错误。
create global temporary table globalTable
(
ids number(11)
);
with periods as
(
select cl.id uniqueId
from inv_mpan_hh_con_lines cl
left join invoice_vat_lines vl on
我必须将许多产品价值记录插入Oracle表中。我从一个xls文件中获取所有数据,用PHP处理它,(目前)吐出一个长SQL语句。在插入每个记录时,我希望检查从xls获得的产品if和数据库中已经存在的产品,如果if与产品不匹配,则跳过插入。我试过的陈述如下:
INSERT ALL
INTO PRODUCTOS_X_PLANES_CATEGORIA(PXG_ID, PXG_PRODUCTO, PXG_PLAN_CATEGORIA, PXG_VALOR)
VALUES (NULL, 123456, 81, 10000)
INTO PRODUCTOS_X_PLANES_CATEGORIA(PX
不管我怎么写这个语句,我总是会得到ORA-00928缺少的select关键字错误。
我试图将查询中的值插入到表中。查询结果的列数与需要插入的表的列数相同。我试过把它做成CTE。即使是来自现有表的select查询也会返回相同的错误。
代码就像:
WITH FIRST_CTE(FrstCol1,FrstCol2)
AS
(
SELECT 't', '1' from dual UNION ALL
SELECT 's', '2' from dual
)
,
SECOND_CTE(SndCol1,SndCol2)
AS
(
S
这些查询都是equi join的表示吗?
我发现两者返回相同的结果。
Query1:
SELECT C.* FROM [Case] A, [Event] B, Notice C
WHERE A.CaseID = B.CaseID
AND B.EventID = C.EventID
Query2:
SELECT C.* FROM [Case] A
join [Event] B on A.CaseID = B.CaseID
join Notice C on B.EventID = C.EventID
请澄清。
我有返回sys_refcursor的函数,我给你我的代码的例子。
function myfunc( p_city IN VARCHAR2,
p_order IN VARCHAR2)
RETURN SYS_REFCURSOR IS
v_result SYS_REFCURSOR;
begin
OPEN v_result FOR WITH all_prb AS(
select * from tableA ta inner join tableB tb)
'select * from all_prb ff where (:
我有一个表A。如果我使用内联函数进行查询
with function f(n number) return varchar2 as
begin
return 'const string';
end;
select id, val, count, f(count) as value from A;
结果如下:
ID VAL COUNT VALUE
---------- -------------------- ---------- ---------------
1
因此,我同时正在学习Access 2007、Visual Basic和SQL。不太理想。
我将这段代码附加到标准向导生成界面中的一个按钮上。我正在尝试从tblA复制一行到tblB。每次执行代码时,我都会收到消息,“运行时错误'3137‘缺少的分号(;)位于SQL语句的末尾。”
我猜它是希望SQL语句在WHERE之前终止。但是如果没有WHERE,我将如何将添加的内容附加到特定的行ID?
Private Sub buttonAdd_Click()
Dim strSQL As String
strSQL = "INSERT INTO [tblB]" & _
&
当我做一个:
SELECT id FROM table1
UNION ALL
SELECT id FROM table2
我得到了一张新的桌子,上面有所有的it,非常完美。但是当我尝试一个:
SELECT * FROM (
SELECT id FROM table1
UNION ALL
SELECT id FROM table2
)
它不工作,它不会给我返回任何东西。
有什么可以帮我的吗?我尝试了很多东西,这是一个非常小的代码,所以我不明白为什么它不能工作。
太感谢了。
这个问题似乎被打死了,但我找不到解决我处境的办法。在Oracle SQL Developer中,我编写了以下查询,并且我知道它在语法上是正确的(或者它至少检索我需要它的数据)。
select QUERY.SETID, COUNT(QUERY.GENEID)
from QUERY, G2
where QUERY.GENEID = G2.GENEID group by QUERY.SETID
order BY COUNT(QUERY.GENEID) DESC;
我把它翻译成了我的Java程序,如下所示。
String query = "select QUERY.SETID, COUNT
以下查询运行:
select foo.g from (select 'hello' as g) as foo
这个查询也会运行:
select bla.x from (select 'world' as x) as bla
但这一次却没有:
select * from (select foo.g from (select 'hello' as g) as foo) join (select bla.x from (select 'world' as x) as bla)
我收到以下错误消息:
Msg 156, Level 15,
这是我的plsql块
BEGIN
FOR c IN ( SELECT T.table_name FROM user_tables T INNER JOIN (SELECT distinct to_char(SYSTEM_DATE,'yyyymmdd') as sys_date FROM *) ON T.table_name LIKE '%' || sys_date || '%' )
LOOP
EXECUTE IMMEDIATE 'DROP TABLE ' || c.table_name || ' CASCA
我正在尝试创建一个触发器,在insert/update之后触发该触发器,并在两个列中检查空值。如果其中任何一个为空,则会查询其他表并更新当前表。
CREATE OR REPLACE TRIGGER sample_trigger
AFTER INSERT OR UPDATE
ON test_table
FOR EACH ROW
BEGIN
IF :NEW.ID IS NULL OR :NEW.CODE IS NULL
THEN
UPDATE (:NEW.ID,:NEW.CODE) = (SELECT T1.ID,
下面是数据库的模式:
哪一家公司享有的权利最少?
请告诉我我的答案有多错。
select top 1 companyName
serialNumber_tbl as sn, Entitlement_tbl as ent, Company_tbl as c
where sn.serialNumberId = ent.serialNumberId
and c.companyId = sn.companyId
order by count(distinct entitlementId) asc
group by companyName
谢谢。
当我进行这样的查询时:
SELECT payment.customer_id, COUNT(payment.customer_id), SUM(payment.amount)
FROM payment
GROUP BY customer_id
ORDER BY SUM(payment.amount) DESC
LIMIT 10
它工作得很好,但是当我尝试连接另一个表中的字段时,它失败了:
SELECT payment.customer_id, customer.email COUNT(payment.customer_id), SUM(payment.amount)
FROM payment
我正在使用sql查询中的FULLTEXT搜索记录。
SELECT * FROM (SELECT d.DataId, (SELECT [Name] FROM Category WHERE CategoryId = d.CategoryId) AS 'Category', d.Description, d.CompanyName, d.City, d.CategoryId,
d.CreatedOn, d.Rank, d.voteCount, d.commentCount, d.viewCount
FROM Data d
我想这么做:
with
function add_fnc(p_id number) return number
is
begin
return p_id + 1;
end;
insert into temp_table
(
select add_fnc(1) from dual
);
但它显示了编译错误:
ORA-00928:缺少SELECT关键字
有办法在insert语句中使用CTE函数吗?
我有两张桌子,sprockets和cogs。
create table sprockets(
id NUMBER
);
INSERT into sprockets VALUES (4);
INSERT into sprockets VALUES (8);
INSERT into sprockets VALUES (15);
INSERT into sprockets VALUES (16);
INSERT into sprockets VALUES (23);
INSERT into sprockets VALUES (42);
create table cogs(
id
我要为位于另一个日期范围内的日期范围选择数据
我有下面的表格
ID FNAME LNAME BEG_EPISODE_DT END_EPISODE_DT TRGT_DT
1 John G 12/20/16 02/11/17 03/31/17
2 King R 11/10/16 12/25/17 03/31/17
3 Bundt H 10/19/16 01/16/17 03/31/17
4 Smith F 02/16