如果查询/子查询找不到任何匹配的行,则将返回NULL或根本不返回值,因此甚至不返回NULL值。基于什么条件,查询/子查询返回NULL,什么时候不返回任何结果,甚至不返回NULL值?如果没有找到匹配的行,将始终返回NULL吗?如果没有找到行,则大多数外部标量查询也会返回NULL?选择FirstName,LastName,LastName(BirthDate)从Person WHERE (BirthDate) IN (从专辑中选择YearReleased );
- If the subquery finds no results, is the WHERE clause of the outer
我想要基于以下条件更新多个行的列-我只想更新abhipsha/AUDUSERF文件的列AUUSRTX
WHERE AUDUSERF.AUUSRTP <> 'USR' and AUDUSERF.AUUSRTP <> 'usr'
并且需要更新的值必须来自匹配用户id的usrprffil的usrprffil.uptext。这两个表的用户ids如下
usrprffil.upuprf = auduserf.auusrid
有没有人可以帮我回答这个问题?
我写了以下3个查询,但我得到的错误是--第一个和第二个查询查询1的“Result of S
我是一个开始SQL程序员-我得到了大多数东西,但不存在。
在我看来,并通过文档查看,一个完整的EXISTS语句返回一个布尔值。
但是,我看到了一些具体的例子,在这些例子中,可以使用它并返回表的一部分,而不是全部或没有。
SELECT DISTINCT PNAME
FROM P
WHERE EXISTS
(
SELECT *
FROM SP Join S ON SP.SNO = S.SNO
WHERE SP.PNO = P.PNO
AND S.STATUS > 25
)
这个查询返回一个值,这个值符合条件(S.Status > 25)。
但是,
查询1与任何操作符:
Select * from products
where price > Any (select price from products where price > 500)
查询2和ALL操作符:
Select * from products
where price > All (select price from products where price > 500)
这两个查询都是相同的,唯一的区别是操作符的变化。
查询1没有得到任何结果(0行)
查询2正在生成表中的所有行(77行)
我无法理解上述现象,请帮助我理解这两个查询。
请参阅下面的
我有一个查询,需要返回子查询中不匹配的结果。子查询可以返回空结果,因此如果子查询返回空集,则需要设置默认值(例如0),以防止始终返回另一个NULL的IN (NULL)。
例如
SELECT * FROM example_table WHERE id NOT IN (subquery_that_selects_ids)
如果子查询没有找到匹配的结果,subquery_that_selects_ids可以返回一组整数,即(1,2,5,6)或空集。
COALESCE在这里不工作,因为子查询可能返回多个结果。
解决方案需要在SQLite或postgresql中工作。如何防止子查询返回空集?
每个人都
当锁子句出现在子选择中时,锁定的行是子查询返回到外部查询的行。这可能比单独检查子查询所显示的行少,因为来自外部查询的条件可能用于优化子查询的执行。例如,
SELECT * FROM (SELECT * FROM mytable FOR UPDATE) ss WHERE col1 = 5;将只锁定具有col1 = 5的行,即使该条件在子查询中不具有文本性。
有人能帮我理解一下这句话吗?“这可能比检查子查询所显示的行少,因为外部查询的条件可能被用来优化子查询的执行”?
我的理解是“锁定的行是子查询返回到外部查询的行”,所以不管子查询返回什么子查询(在本例中是所有行),这些行必须是锁的?为什
我使用Doctrine与2一起使用子查询对我的发票表进行查询。
下面是使用参数填充的简化生成的SQL
SELECT *
FROM invoices i1
WHERE (EXISTS (SELECT * FROM invoices i2 WHERE i2.invoice_first_name IN ('stephen') OR i2.invoice_middle_name IN ('stephen') OR i2.invoice_surname IN('stephen')))
ORDER BY i1.invoice_id DESC
我遇到的
我有一个项目数组,如何扫描字符串并检测数组中的项目是否存在于字符串中的任何位置。我看到了其他类似于这个问题的帖子,但都没有奏效。也许是因为我在用wordpress
例:
$string = get_the_title();// "The Man Who Wants You – Amos Lee [Vevo Official Video]" ---the string
$bads = get_the_tags();// array('Amos Lee', 'Foo Fighters', 'U2'); array of items
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
第一个查询没有返回任何结果,而第二个查询给出了任何结果。有什么不同?
如果子查询没有返回结果,我希望"= ALL (子查询)“计算为false。
然而,在测试中,我发现情况并非如此:
--put one record in #Orders
SELECT 1 AS 'OrderID'
INTO #Orders;
--put one record in #OrderLines
SELECT
1 AS 'OrderID'
,1 AS 'OrderLineID'
,3 AS 'Quantity'
INTO #OrderLines;
--as expected this r
当子查询未返回任何内容时,如何让0>All()返回false?从逻辑上讲,对于我的情况,如果all()中没有任何内容,All()就不能小于0。
示例:
select x from table
where 0 > ALL(complex subquery)
如何修改它,使其为空列表返回false。这个子查询又长又复杂,我不想重复它两次,一次用于exists(),一次用于0>ALL()
我想写一个SQL查询来显示匹配的行(如果它存在的话),否则显示所有的记录。
示例:-输入数据:-
id
1
2
3.
4.
select * from table where id = 2 /* since id exits it should return id o/p 2 */
select * from table where id = 8/* since id doesn't exist it should return all the rows of table)
即o/p
1
2
3.
4.
我想严格地在SQL中这样做,没有PL/SQL,也没有编程块
我的工作是预约制度:我有两张桌子:
Times(hour varchar);
Reservations(time varchar, date varchar);
从8:00到6:00(08:00,08:30:09:00等)预订有预定的时间。这家商店有3名员工可以同时进行预约,因此3名客户可以在每次上午10:00预订。
我的目标是返回没有保留的时间列表,但有一个条件:如果一个时间被保留了少于3次,那么它仍然可以保留。我试过这个查询
SELECT `hour` FROM `times` WHERE `hour` NOT IN (SELECT `time` FROM `reservations` W
我对这里的SQL非常困惑,它在我们的应用程序中使用,但我不知道它是如何工作的。我把它放在我在网上找到的例子,它似乎没有任何问题。
它正在做的是抓住一套最新的时间戳。我们不能使用ORDER BY,因为必须有多个分组。实际的查询要大得多,这只是一个显示基本选择的精简版本。
select * from table1 as main
WHERE NOT (EXISTS (select * from table1 sub
WHERE sub.datetime > main.datetime));
(在线直播版本:http://sqlfiddle.com/#!17/290cc/2)
我认为应该发生在
我使用的软件将只允许我进入的地方.SQL语句的部分。
所以我可以在where子句中使用EXISTS ()语句..。
然而,
这个查询..。
SELECT DISTINCT Left([PR].[WBS1],5)&"-000" AS WBS1
FROM PR
GROUP BY Left([PR].[WBS1],5), Right([PR].[WBS1],3), PR.Status
HAVING ((Right(PR.WBS1,3)<>'000') And ((PR.Status)='A') And (Count(PR.Org))
我相信以下的查询是等同的,应该会产生同样的结果:
select CITY from TBL_X
where CITY not in (
select CITY from TBL_X
where CITY in (
select CITY
from TBL_Y
)
)
select CITY
from TBL_X
where CITY not in (
select CITY
from TBL_Y
);
但是,第一个查询生成10行数据,而第二个查询生成0行数据。对此有什么合理的解释吗?
我在Server 2012上运行了一个查询,该查询没有返回任何结果。我发现这是不正确的,我应该得到16张记录。我更改了查询并得到了预期的答案,但是我不明白为什么我的原始查询不能像预期的那样工作。
因此,我最初的没有返回结果的查询是:
SELECT
WPB.[ID number]
FROM
[Fact].[REPORT].[WPB_LIST_OF_IDS] WPB
WHERE
[ID number] NOT IN (SELECT DISTINCT IdNumber
FROM MasterData.Dimension.Cus
我对COALESCE函数在DB2中有一个问题。
我的发言:
SELECT COALESCE(ATTR,'NA') FROM TABLE WHERE %condition%
如果根据条件找到ATTR,则选择ATTR的返回值,但如果找不到ATTR,则希望SELECT返回"NA“。但是,它不返回任何行。
谢谢你帮忙。
对于每个sql服务器,Null并不等同于sql中的任何东西,但以下查询将返回已下订单的所有产品。
Select * from products
where exists (select null from orderdetails
where orderdetails.product_id = products.product_id
Server 2008
SELECT ('ABC-' +
MAX(CAST(
(SUBSTRING([ID], CASE CHARINDEX('-', [ID])
WHEN 0
THEN LEN([ID]) + 1
ELSE CHARINDEX('-', [ID]) + 1
END, 1000)+1)
AS VARCHAR)
)) AS next_
SELECT (b.descr || ' - ' || c.descr) description
FROM table1 a
INNER JOIN table2 b ON a.account = b.account
INNER JOIN table3 c ON a.product = c.product
WHERE a.descr = ' ' ;
如何使用上面的子查询更新表?它返回超过一行的近8000行?如果你对此有任何解决方案,请与我分享?
我想从目录中选择一些与两个表(Table1和Table2)无关的行。
目录中的行使用字段idA与表相关。
我使用以下查询:
;with CTE(id) AS(
select distinct idA from Table1
union
select distinct idA from Table2
)
select * from Catalog where IdA NOT IN (select id from CTE)
非常奇怪的是,这个查询没有返回任何结果。
如果我在de CTE之后使用以下查询,它将返回一些行
select Id from Catalog where not exist
在查看了这里的其他一些mysql可用性查询问题之后,到目前为止,我的工作方式与其他问题略有不同。
基本上,我有一个日期表,每个日期都是一行。每行都包含字段,用于说明费用、房间类型以及预订该日期的天数。因此,如果一个酒店有一个房间类型,它将有365行,如果它有5个房间类型,它将有1825行
bd_id int(10) NO PRI NULL auto_increment
bd_room_type varchar(32)
bd_date date NO
bd_price decimal(8,2)
bd_h_id int(8) NO /* Hotel id */
bd
SQL代码片段#1:
select *
from customer
where exists (select null)
order by residence desc;
SQL代码段#2:
select customer_id, customer_name
from customer
where exists (select customer_id
from customer
where residence = 'los angeles'
and age > 20
我正在尝试写一个sql server 2005的存储过程,它将首先检查电话是否存在于数据库中。如果行存在,它将给我该行的MerchantID。否则,它将检查CompanyName、城市和州,并获取MerchanTID,否则它不会给我任何东西。但是我遇到这样的错误:“子查询返回的值多于1。当子查询跟在=,!=,<,<=,>,>=之后或子查询被用作表达式时,这是不允许的。'CheckifMerchantexists‘过程试图返回NULL状态,这是不允许的。将返回0状态。”我哪里做错了?谢谢你的帮助。
ALTER PROCEDURE [dbo].[CheckifMer
我在这张桌子上查询:
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':
我很确定这是一个隐式转换,但我无法找到有关它的信息。
假设我有这个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 :当存在时选择
所以我有两个表,并且有一个预期的行增量,但是除非我使用左外部联接,否则这个增量不会返回。有人能帮助我理解为什么查询1适用于这个用例,但查询2不能:
--QUERY 1 - THE FIRST QUERY RETURNS THE EXPECTED DELTA BETWEEN FULLPROD and IMPORT_DOCUMENTS AS EXPECTED
SELECT FULLPROD_DOCID
FROM (SELECT IMPORT_DOCUMENTS.DOCID AS Import_Documents_DocID,
FULLPROD.DOCID
我有一个邮件列表,有许多条目是重复的。我在试着找到重复的,这样我就可以删除它们了。当我运行下面的完整查询时,我获得了表(142,000 +)中的所有项。当我运行子查询时,我只得到5768行。我需要每个重复行的所有列来决定删除哪一行。我做错了什么,导致完整查询返回所有行?
select * from Mailinglist
where exists
(select count(*), mailaddress, CenterName
from Mailinglist
group by MailAddress, CenterName
having count(*)>1)
我有两个表: PROD和CUST在SQL和SYBASE中运行以下查询时,它可以工作。甲骨文没有给出任何结果。
select * FROM PROD
where PROD.SECID NOT IN (SELECT CUST.SECID FROM CUST WHERE SECID <> '')
注意: PROD.SECID的所有值都是空值。CUST.SECID具有所有非空值(有效值)。
<>''不会从内部子查询中获取任何记录,所以我将其更改为IS NOT NULL,现在它会获取结果。
但问题是,当查询作为一个整体运行时,它不会给出任何结果,而