我在我的部分代码中遇到了问题,这样做,当子查询没有引入EXISTS时,只能在select列表中指定一个表达式。更新部分正在工作,但是如何使用insert into来计算条件是否意味着它将插入。
IF
/* CHECKLIST TO UPDATE*/
(NOT EXISTS
(SELECT *
FROM ENERGY.D_ENERGY_REFERENCE D_ENERGY_REFERENCE
,ENERGY.D_CHECK_LIST D_CHECK_LIST
WHERE D_ENE
如果不指定TOP、OFFSET或FOR XML,ORDER BY子句在视图、内联函数、派生表、子查询和公用表表达式中无效。这是我正在使用的查询:
UPDATE SMS
SET idx30 = 'New'
WHERE idx30 in
(
SELECT *
FROM SMS
WHERE idx30 IS NULL
AND (idx15 = 'Del' OR idx15 = 'Fail')
AND Idx13 <> '1'
AND Idx7 >= DATEADD(day
我使用Server 2012,并试图根据子查询中的名称对以下查询的结果进行排序,但始终会得到SQL执行错误。
我在这里做错了什么或者错过了什么?
My查询:
SELECT A.EmpID,
(SELECT B.EmpID, B.LastName + ', ' + B.FirstName AS TM
FROM dbo.EmpTable AS B
WHERE B.SupEmpID = A.EmpID)
FROM dbo.EmpTable AS A
WHERE A.NTID = 'someID'
ORDER BY B.
请任何人帮助我了解SQL server中的“Server数据库错误:当子查询未引入EXISTS时,只能在select列表中指定一个表达式”。
select * from
(select row_number() over ( order by (select null) ) rn,
(select distinct test1,test2,test3
from table1
where table1.test1= 1
EXCEPT
select distinct test1,test2,test3
from table2
where table2.test1= 1)
)
SELECT COUNT(column_1)
FROM table_name1
WHERE CREATEDATE BETWEEN (SELECT MONTH(07), YEAR(2017)FROM table_name1)
AND (SELECT MONTH(11), YEAR(2017)FROM table_name1).
我的查询如下所示,但我得到的错误如下
当子查询未引入EXISTS时,只能在select列表中指定一个表达式。
我需要比较从日期(月和年)到今天(月和年)之间的差异。
数据库
Db2
场景
我必须得到一个ID和DELETE FROM...两个表的列表。我从CTE获取所有的ID,但是我只能在一个DELETE语句上使用它,我必须再次查询CTE是否有另一个DELETE。
电流溶液
-- GET A LIST OF ALL CHILDREN OF A NODE, INCLUDING A NODE
WITH NODE_LIST (ID) AS
(
-- CHILDREN
SELECT n.ID FROM NODE n WHERE n.ID = '8ae433156f7f4469857e7de205ec4fe0'
UNION AL
我在这张桌子上查询:
SKU
aaaa
bbbb
bbbb
NULL
以下是查询:
select *
from TEST as N
where N.SKU NOT IN (select SKU
from TEST
group by SKU
having count(*)>1);
我希望查询返回'aaaa',但是它什么也不返回。
我希望这样做是因为下面的子查询只返回'bbbb':
执行以下查询需要5秒钟:
SELECT DISTINCT(Product.Name) FROM Product WHERE (0=1 OR Product.Number="prod11");
而下面的操作只需要15毫秒:
SELECT DISTINCT(Product.Name) FROM Product WHERE (Product.Number="prod11");
有趣的是,下面的代码也只需要15毫秒:
SELECT DISTINCT(Product.Name) FROM Product WHERE (1=1 AND Product.Number="
这里的数据是图表和附录(图表是病人号)。我想知道哪些病人没有得到治疗。自20170301以来
SELECT chart
FROM [Dentrix].[dbo].[DDB_APPT_BASE]
WHERE apptdate not in (
SELECT *
FROM [Dentrix].[dbo].[DDB_APPT_BASE]
WHERE APPTDATE > '20170301'
)
但是这个查询被拒绝了。
Msg 116、级别16、状态1、第4行只有一个表达式可以在select列表中指定,当子查询未引入EXISTS时。
我很确定这是一个隐式转换,但我无法找到有关它的信息。
假设我有这个SQL:
SELECT
CASE WHEN (SELECT 1 WHERE (1=1)) = 1 THEN 1 ELSE 0 END
我的子查询返回一行,因此与1相比较。这将导致我的情况是何时产生1输出。
即使我将子查询设置为不像下面的示例那样返回任何行,CASE语句也会返回0结果:
SELECT
CASE WHEN (SELECT 1 WHERE (1=0)) = 1 THEN 1 ELSE 0 END
SQL解释器是否在“空集”到0或1之间进行转换?
我不喜欢用这种比较。在我看来,最好像这样使用opinion :当存在时选择
这两个中哪一个会表现得更好(最近有人指责我对代码不小心,因为我在Oracle中使用了后面的代码):
Select *
from Tab1
Where (not) exists(Select 1 From Tab2 Where Tab1.id = Tab2.id)
Select *
from Tab1
Where (not) exists(Select Field1 From Tab2 Where Tab1.id = Tab2.id)
还是他们俩是一样的?
请从Server角度和Oracle角度回答这两个问题。
我已经在googled上搜索过(主要是在sql-server端),并发现在这
我有两张这样的桌子
create table department(
Dno int primary key,
name varchar(50) not null
)
create table employee(
empid int primary key,
name varchar(50) not null,
sal decimal(7,2) not null,
dno int foreign key references department(Dno))
我希望使用SQL子查询获得以下查询的相同结果。
SELECT e.Name, e.Sal, d.Dno, d.Name
FROM E
我试图得到一些我认为应该相对简单的东西(它在甲骨文和MySQL中是有效的)。下面代码的PostgreSQL小提琴是可用的 -只需更改服务器以查看其他代码即可。
非常简单的测试用例:
CREATE TABLE x
(
y CHAR(1)
);
人口:
INSERT INTO x VALUES ('x');
和
INSERT INTO x VALUES('y');
然后(如人们所预料的那样工作):
SELECT
y AS the_char
FROM
x
ORDER BY the_char;
结果:
the_char
x
y
相当多的数据库脚本的形式如下:
IF NOT EXISTS(SELECT * FROM Countries WHERE Name = 'France')
INSERT INTO(Countries)
然而,我也看到人们这样做:
IF NOT EXISTS(SELECT CountryID FROM Countries WHERE Name = 'France')
INSERT INTO(Countries)
甚至:
IF NOT EXISTS(SELECT 1 FROM Countries WHERE Name = 'France')
INSER
编辑:
尝试将其更改为以下内容(将CTE移至顶部)。
我现在得到错误:
关键字“FROM”附近的语法不正确。
我尝试把一个非常简单的选择在第二个‘然后’子句,甚至没有使用cte,我得到了同样的错误。似乎不喜欢在第二个子查询?
WITH MainCTE AS (
SELECT DISTINCT rownum = ROW_NUMBER() OVER (
ORDER BY u.PLANNED_DATE
)
,u.name
,u.o
我正在尝试设置一些SQL测试查询,以记录测试是通过还是失败在SQL表中。这些测试查询在几个单独的数据库上运行。下面是一个使用基本查询(在IF语句中)的示例:
DECLARE @dbname NVARCHAR(200);
DECLARE @query NVARCHAR(MAX);
DECLARE db_cursor CURSOR FOR
SELECT name FROM sys.databases
WHERE name LIKE '%JMPTIPR%'
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @dbname
WHILE @
我正试图在中实现这类目标。
( 1)计算例外表中的记录2)如果有异常,将数据写入excel表3)如果没有,写“无数据可用”
为此,我编写了一个简单的查询,但是获得错误Msg 116、级别16、状态1、第3行时,在没有使用EXISTS引入子查询时,只能在select列表中指定一个表达式。
SELECT CASE WHEN (SELECT COUNT(*) FROM exceptionTable) > 0 THEN
(SELECT * FROM exceptionTable) ELSE 'No Error data available' end
我理解错误信息说了什么,并知道
我尝试过这个查询,但它返回了一个错误:
Select DATA_TYPE
From INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'Customers' AND
COLUMN_NAME IN (Select *
From INFORMATION_SCHEMA.COLUMNS
Where TABLE_NAME = 'Customers');
错误:
当子查询未引入EXISTS时,只能在select列表中指定一个表达式。
当我尝试执行以下操作时:
update YUmowa_Kontrahent set YUK_Typ_Umowy= 'WS'
where YUK_IdObiekt in (select YO_Id,
sum(isnull(YROB_WZ_Woda,0))as woda,
sum(isnull(YROB_WZ_Scieki,0))as scieki ,
case
when sum(isnull(YROB_WZ_Woda,0))> 0 and sum(isnull(YROB_WZ_Scieki,0))>0 Then 'WS'
end
INSERT INTO table1
SELECT * FROM table2
WHERE NOT EXISTS
(SELECT 1 FROM table1
WHERE table2.id = table1.id)
这个1在第四行代码中扮演什么角色?我希望使用来自table1的记录对table2进行增量更新。一个友好的灵魂建议我使用上面的查询,我发现这个查询在web上很常见,如果对表进行增量更新的话。有人能解释一下这个机制是如何工作的吗?
select ISNULL(c.name,'any') from (select Name from Orders where ID = '123')
select ISNULL((select Name from Orders where ID = '123'),'any')
Orders表有两列
1. ID
2. Name
订单中的数据是
ID Name
121 abc
124 def
第一个查询没有返回任何结果,而第二个查询给出了任何结果。有什么不同?
我有两张桌子,一张是顾客,另一张是订货单。我要从第四病房注册的名单,不包括已经购买的客户名单。
SELECT *
FROM Customer
WHERE RegisteredDate BETWEEN CONVERT(DATETIME,CONVERT(VARCHAR(50),'12/04/2015',101))
AND CONVERT(DATETIME,CONVERT(VARCHAR(50),'12/07/2015',101))
AND CustomerID NOT IN(SELECT *
查询
select * from tbl_emp
where emp_salary=(
select top 1 emp_salary from
(
select distinct top 3 emp_salary
from tbl_emp
order by emp_salary desc
)
)a
order by emp_salary
or emp_salary=
(select * from tbl_emp)
错误
Msg 102
我使用linq到sql,我有一个任务实体,它包含一个赋值集合。假设我去查询每个任务的所有任务的总持续时间。
我编写了以下查询:
return db.Missions.Select(m => new MissionNameDays()
{
Name = m.MissionName,
Days = m.Assignments.Sum(a => a.Duration())
});
持续时间被简单定义为(为了保持简单)
public partial class Assignment
{
public int Duration()
我已经找了很长一段时间了,一直找不到答案。我有以下查询:
SELECT DISTINCT o.titulo, o.fecha_estreno
FROM Obra o
WHERE (o.titulo LIKE '%Barcelona%' AND EXISTS(SELECT p.id_obra FROM Pelicula p WHERE p.id_obra = o.id_obra)) OR EXISTS(SELECT DISTINCT pa.id_obra
FROM Participa pa
WHERE pa.id_obra = o.id_obra AND EXISTS(SEL
DELETE FROM _Inventory
where ItemID = (
SELECT *
FROM _Items
WHERE RefItemID IN ( 46440 , 46441 , 46442 )
AND ID64 = @ID64 )
如果未使用EXISTS导入子查询,则只能在选择列表中指定一个表达式。
我们有以下JPQL:
Select distinct sys.ipAddress from SystemLog sys where sys.ipAddress is not null and sys.ipAddress is not empty
这将生成以下mysql语句。
select
distinct systemlog0_.ipAddress as col_0_0_
from
SystemLog systemlog0_
where
(
systemlog0_.ipAddress is not null
)
and (
我有一个in列表,我需要一个查询来返回指定表中不存在的in。我知道,在SQL中,您可以这样做:
select *
from (
values (4),(5),(6)
) as v(id)
where not exists (select *
from images i
where i.id = v.id);
(从这个答案:)
但我正在尝试使用JPA @Query,并将列表作为参数传递,而它似乎并不喜欢这个参数。
SELECT t.id
FROM :ids AS t(id)
WHERE NOT EXISTS
([Nested select clause])
使用
Li
这可能更容易首先用代码来解释,所以我目前正在使用如下所示的内容:
'A' in
(
SELECT DISTINCT b.col1
FROM table b
WHERE b.ky1 = a.ky1
AND b.ky2 = a.ky2
AND b.group = a.group
AND b.rowNum < a.rowNum
)
在where条款中。本质上,我试图查看A在外部查询指定的行之前的任何一点上是否是一个值。这是它自己的工作。问题是当
我得到了这个错误:
除非还指定了TOP或FOR XML,否则ORDER BY子句在视图、内联函数、派生表、子查询和公用表表达式中无效
从这个查询中:
(SELECT Z.dMonth,Z.dCount FROM (
SELECT COUNT(*) dCount, month(tblDiving.date_of_diving) as dMonth
FROM tblDiving
GROUP BY month(tblDiving.date_of_diving)
)Z
ORDER BY Z.dCount)
我知道我需要在这个查询中的某个地方添加"Top“,但是在哪里呢?最后,此查询需要
这是我尝试运行的查询:
Select Status from [transaction] where TransactionID IN (select MAX(CAST(TransactionID AS VARCHAR(36))), sum(debit)
FROM [transaction]
WHERE dbo.getday(StartSaleTime) >= '5/1/2011' and dbo.getday(StartSaleTime) <= '5/3/2011' and Status > -1 And TransactionNo l
select i.sicil_no,
m.adi,
m.soyadi,
i.net_tutar,
i.odeme_tarihi
from ibrmt050 i,
mismt301 m
where (i.sicil_no=m.sicil_no and
odeme_turu='36' and
odeme_tarihi between '01/01/2012' and '30/06/2012')
GROUP BY TO_CHAR(i
SELECT st.state_id,
st.state_name,
st.country_id
FROM state_table st
WHERE EXISTS (SELECT 0 / 0
FROM country c
WHERE st.country_id = c.country_id
AND c.country_name = 'India')
此查询生成与st.country_id = c.country_id匹配的
我正要执行下面的更新查询-
update t1 set t1.a=(select distinct t2.a from t2 where t1.id=t2.id and rownumber=1) WHERE EXISTS (SELECT 1 FROM t2 WHERE t1.id= t2.id and T1.email='test@dummymail.com' )
但是,我在下面的查询中错误地执行了子查询,其中还包括t1。现在,我被错误地更新了记录。
update t1 set t1.a=(select distinct t2.a from t2,t1 where t1.id
我对PL/SQL非常陌生,如果问题很明显,我很抱歉
根据,触发器有一个时间(条件)。我想使用一个,它需要一个子查询,但是,我有以下错误:
奥拉-02251
00000 -“此处不允许子查询”
*原因:语句中不允许子查询。
*操作:从语句中删除子查询。
我错过了什么?
我的情况如下:
CREATE OR REPLACE TRIGGER mytrigger AFTER UPDATE OF column ON THIS_TABLE
FOR EACH ROW
WHEN (NEW.status = 'approved' AND EXISTS (
SELECT *
我想知道是否有人可以解释为什么会发生以下情况:
下面的表格是我自己编的。它有两列"A“和"B":
A B
==========
1, 11
2, 12
3, 13
4, 14
5, 15
6, 16
7, 17
8, 18
9, 19
如果我运行以下查询:-
SELECT * FROM
(SELECT A,B FROM Table_1) T1
WHERE EXISTS
(SELECT 'X' FROM Table_1 WHERE A
我从这样一个查询开始:
SELECT A.*
FROM TABLE_A A
INNER JOIN TABLE_B B
ON A.YEAR = B.YEAR
WHERE A.ID IN (SELECT ID FROM TABLE_B)
上面的查询给我提供了重复的记录,因此我添加了DISTINCT关键字如下:
SELECT DISTINCT A.*
FROM TABLE_A A
INNER JOIN TABLE_B B
ON A.YEAR = B.YEAR
WHERE A.ID IN (SELECT ID
我有一个名为t的表( abc varchar2(50),xyz varchar2(50),..etc),并且在列abc上启用了索引。Oracle对userfunction(a)使用索引,这需要很长时间。这是一个动态查询形式,可以有另一个条件,必须在abc上使用索引,所以我不想使用no_index提示。
select *from t
where
userfunction(a) = 0
and exists (select 1 from tab where t.abc='' ...etc)
and ..etc
我试图通过将函数移到嵌套查询来重写带有嵌套查询的查询,但是oracle