我正在用python脚本查询sqlite数据库表。
SELECT servername,
date('now','localtime'),
sum(CASE WHEN locked="NO" THEN 1 END),
sum(CASE WHEN locked="YES" THEN 1 END)
FROM nodes
WHERE servername="SOME_SERVER"
它工作正常(给我服务器名、今天的日期、未锁定节点的数量和锁定节点的数目).
..。除了查询没有匹配时(即。
如何在PostgreSQL SQL查询中使用!=过滤SQL结果?示例
SELECT * FROM "A" WHERE "B" != 'C'
工作中。但它也过滤了所有记录中的"B" IS NULL。当我将查询更改为:
SELECT * FROM "A" WHERE "B" != 'C' OR "B" IS NULL
我得到了正确的结果。O_o。总是,当我需要使用!=时,我也需要检查OR "field" IS NULL?真的?
相反,在Sequelize:
declare @Name varchar(45)
SELECT
*
FROM
table law
WHERE
--law.emp = case when isnumeric(@Name) = 1 then @Name else null end
law.emp = case when isnumeric(@Name) = 1 then @Name end
or coalesce(law.lname + ', ' + law.fname, '') like '%' + @Name + '
假设我有一张名为nameAge的桌子
ID Name Age
1 X 12
2 Y 12
3 null null
4 Z 12
当我运行这样的查询时:
select * from nameAge where Age <> 12
它返回一个空的结果集,而我在与id 3的行中age与null不同?
使用Sql Server 2008 R2。
有什么想法吗?
编辑:与建议的答案重复的可能性可能在某一点,但根本不涵盖,它显示了如何使用空值与空值相比,但我想问的是结果集,其中包括空值。
我正在调用从给定ids的表中返回值。我的桌子看起来是:
ID VALUE
'123' 'Apple'
'123' 'Apple'
'123' 'Apple'
'789' 'Orange'
我有一个数组('123‘、'123’、'123‘、’789‘)中的所有is,然后将其作为查询中的值参数传递。
const result = await db.manyOrNone(
`SELECT value from 'Tab
我有一个对结果集使用bit_or的mysql查询。当没有结果集时,bit_or函数返回0(根据mysql文档,这是正确的)。
例如:
select n from t1 where a=1;
不返回任何行。
select bit_or(n) from t1 where a=1;
返回0
我需要强制最后一个查询不返回bit_or查询的任何结果,例如(在伪代码中,因为我不知道正确的调用):
select bit_or(n) unless 0 from t1 where a=1;
有人知道我是怎么做到的吗?(澄清一下,我需要一个外部程序的"no result on 0“返回值,不幸的是,这个返
每天我都会学到一些新的东西,似乎:)谁能给我解释一下下面这些代码行为背后的基本原理:
DECLARE @A INT
SET @A = 15
SET @A = (SELECT ValueThatDoesntExist FROM dbo.MyTable WHERE MyColumn = 'notfound')
SELECT @A
-- Rsultset is NULL
SET @A = 15
SELECT @A = ValueThatDoesntExist FROM dbo.MyTable WHERE MyColumn = 'notfound'
SELECT
我很好奇在t-SQL中比较一个NULL和一个值是否合法?
例如,如果我有:
WITH ctx AS(SELECT 123 AS n0, NULL AS n1)
SELECT n0 FROM ctx
WHERE ctx.n1 < 130
在这种情况下,WHERE子句的计算结果始终为FALSE。这是我可以依赖的东西吗?
我最近开始学习oracle和sql。在学习过程中,我遇到了几个问题,我的朋友在一次面试中被问到。
SELECT *
FROM Employees
WHERE NULL IS NULL;
此查询将生成Employees表中的所有行。正如我所理解的,Oracle在列中搜索数据,因此,NULL,这里是否将其视为列名?当我说Oracle在列中搜索数据时,是否正确?为什么Oracle会给出这个查询中的所有行?在WHERE子句中,条件的左侧不是必须是列名吗?它不应该抛出一个错误吗?
SELECT *
FROM Employees
WHERE NULL = NULL;
不提供选定的行。
嗯,我知
我有两个mysql表,分别是users和images。每个用户最多有5张图片。在页面中,我向用户显示信息和一张图片(第一次上传)。当我像这样查询时
SELECT
SQL_CALC_FOUND_ROWS,
u.username,
u.gender,
u.etc
.........
i.picture
FROM users u
LEFT JOIN images i on u.id = i.id
WHERE
some_condition
如果用户上传了两张图片,mysql的结果是2行。如果图像是3,那么返回的行数是3,依此类推。如何使结果只有一行(一张图片)?
我试图添加
假设我有一张列满年龄的桌子。
这是年龄的清单
1
2
3.
1
1
3.
我希望SQL能够计算出多少岁1,多少2s和3s。
守则:
Select count(age) as age1 where age = ‘1’;
Select count(age) as age2 where age = ‘2’;
Select count(age) as age3 where age = ‘3’;
应该可以工作,但是否有一种方法只使用1行代码就可以全部显示?
亲爱的Stack Overflow社区:
我有一个关于在Android中查询sql数据库时如何合并WHERE子句的问题。我的目标是从我的数据库where the date picked by a datepicker matches the date stored返回特定的记录。
下面是我的代码:
private static String datePickerDate = "3/29/2011";
private static String[] FROM = { _ID, NAME, PRICE, DATE, TIME };
private static String ORD
这两个SQL语句返回相同的结果。那么使用where子句和使用having子句有什么不同呢?
有什么想法吗?
select
min(internid), max(internid)
from
v_intern
where
trainingterm= 'Fall - September' and trainingyear = '2020'
group by
trainingTerm, trainingYear
select
min(internid), max(internid)
from
我有下面的函数,在Server中,在PostGreSQL中,以及在Oracle中使用的版本(不是使用SELECT,而是使用参考游标)。我们在HANA中的函数将在hdbsql命令行上使用警告进行编译,但是在ODBC调用中执行时,它会抛出一个异常。我用来测试的数据库(不幸的是)是版本1 db。
CREATE OR REPLACE FUNCTION GETWFFIELD
(
IN TABLENAME VARCHAR,
IN FIELDNAME VARCHAR,
IN LANGCODE VARCHAR,
IN WORKID DECIMAL,
IN SUBWORK
我有两个表: 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,现在它会获取结果。
但问题是,当查询作为一个整体运行时,它不会给出任何结果,而
SQL#1
select doc.doc_id, doc.content, link, words.words
from doc left join words
on doc.doc_id = words.doc_id and words.words = "foo" and doc.doc_id < 1538766632412
where doc.content like "%foo%" and words.words is null
order by doc.doc_id desc limit 10
SQL#2
select doc.doc_id,
我有一个查询,即检查来自两个不同表的数据,不过一切都很好。当我将查询粘贴到cPanel中时,结果显示如下所示:MySQL returned an empty result set (i.e. zero rows). (Query took 0.0005 sec)
但是,当我在php中计算查询时,它正在重新计算1而不是0,不知道为什么这里是我的Sql查询
SELECT mobile, emailid
FROM tbl_users
WHERE mobile =9653878051
AND emailid = 'rawat@gmail.com'
GROUP BY mobile
U
此问题中的SQL用于Oracle。但是,您可以简单地删除FROM dual以使其在Server上工作(Server返回与Oracle相同的结果)。
我有以下SQL:
SELECT 1
FROM dual
WHERE NULL IN (SELECT 1 FROM dual WHERE 1 = 0);
SELECT 1
FROM dual
WHERE NULL NOT IN (SELECT 1 FROM dual WHERE 1 = 0);
它分别返回空集和1。当我们用其他值代替NULL时,我们得到了完全相同的结果。
SELECT 1
FROM dual
WHERE 33 IN (SELECT
在where中使用条件与在join中使用条件的结果有区别吗?在实际查询中,我可以将AND "noteReads"."id" IS NULL放在where或join中。这有关系吗?
where子句中带有AND "noteReads"."userId" = 1的第一个版本:
SELECT count(distinct("notes"."id")) FROM "notes"
LEFT OUTER JOIN "noteReads" ON "notes".
我找不到任何在SQL中提到Partition By窗口函数的执行顺序的源代码。
它是否与Group By的顺序相同?
例如,表如下:
Select *, row_number() over (Partition by Name)
from NPtable
Where Name = 'Peter'
我理解如果Where首先被执行,它将只查看Name = 'Peter',然后执行只聚合特定人的窗口函数,而不是整个表聚合,这样效率要高得多。
但是,当查询是:
Select top 1 *, row_number() over (Parti
在阅读调优TSQL查询时,我看到了关于避免(或小心)使用WHERE子句中的函数的建议。然而,在某些情况下-例如需要从今天日期开始的动态日期的搜索-我很好奇是否可以进一步调优查询?例如,下面的查询对当前日期使用DATEADD函数,该函数允许用户随时获取过去30天的正确信息:
SELECT *
FROM Zoo..Transportation
WHERE ArrivalDate BETWEEN DATEADD(DD,-30,GETDATE()) AND GETDATE()
如果我尝试删除函数DATEADD,我可以声明一个将拉取该时间的变量,然后使用存储在该变量中的设置值查询数据,例如:
DECLA
我正在尝试加入tags.url = urls.url,但问题出在我的查询中,我得到的标签在urls表中不具有相同的url。
这解决了这个问题,添加了一个WHERE子句来确保url在both..but中是相同的,我不相信这是在SQL中进行连接的正确方式:
SELECT urls.*, tags.tag FROM urls LEFT JOIN tags ON urls.url = tags.url WHERE tags.tag = ? AND tags.url = urls.url ORDER BY created_at DESC LIMIT 50
我使用的是sqlite。
如果我省略了AND t
我确实实现了自己的OData服务,它接受一个SQL语句,并使用一个ROW_NUMBER()应用顶部/跳过过滤器。到目前为止,测试的大多数语句都运行良好,除了包含两个左联接级别的语句之外。由于某些原因我无法解释,当我在行号列上应用where子句时,sql返回的数据正在改变。
为了便于阅读(和测试),我删除了大部分sql,只保留错误的部分。基本上,您有一个病人表,它可能有0到N的诊断,诊断可能有0到N的治疗:
SELECT RowNumber, PatientID, DiagnosticID, TreatmentID
FROM
(
SELECT ROW_NUMBER() OVER (O
我想调出一笔贷款的信息。一条信息是一定的费用金额。如果我将查询简化为贷款数量和手续费金额,我仍然无法弄清楚。第一个查询返回我所期望的结果,一个贷款号码和一个0作为费用金额(没有申请费用),而第二个查询我不能因为爱和金钱而工作。无论我尝试应用哪种类型的连接,它都只会返回一个空的结果集。使用SQL Server2005,如果这有所不同的话。
耽误您时间,实在对不起。
干杯鲍勃
select
tblLoan.loanID as LoanNumber
,isnull(tblgfe1300.gfe1300feeTot,0) as RepairFunds
from
tblLoan
LEFT J
在Oracle 9i上,为什么下面的结果是'abc‘
select 'abc ' || (select txt from
(select 'xyz' as txt from dual where 1=2))
from dual
当它产生'abc xyz‘时:
select 'abc ' || (select txt from
(select count(*), 'xyz' as txt from dual where 1=2))
from dual
为什么向子查询中添加count(*)会
我有一个SQL查询:
SELECT count(DISTINCT(email_address))
FROM Mytable
WHERE TableID = '101'
上面的查询运行良好。
我希望得到电子邮件地址的结果,对于这些地址,TableID具有不同的值,如123,421。
那么,当我编写以下查询时,为什么在MySQLWorkbencch中返回0结果?
SELECT count(DISTINCT(email_address))
FROM Mytable
WHERE TableID = '101'
AND Table
我正在尝试从SQL server数据库中获取计数,对于具有空值的字段,它会给出0。下面是我正在使用的。
my $sql = q{SELECT count(*) from customer where first_name = ? and last_name = ?};
my @bind_values = ($first_name, $last_name);
my $count = $dbh->selectrow_array($sql, undef, @bind_values);
如果数据库中的任一值为null,则返回0。我知道如果传递的参数是undef,prepare会自动将其设为is
在DB2中,我需要做一个插入,然后,使用来自该插入的结果/数据,更新一个相关的表。我需要在一百万多条记录上做这件事,并且不希望锁定整个数据库。那么,1)我如何“耦合”插入和更新语句? 2)如何确保事务的完整性(而不锁定整个she-bang)?
一些伪代码应该有助于澄清。
步骤1
insert into table1 (neededId, id) select DYNAMICVALUE, id from tableX where needed value is null
步骤2
update table2 set neededId = (GET THE DYNAMIC
如何强制SQL Server首先计算子查询?
我的查询类似于:
SELECT ObjectId FROM
(SELECT ObjectId FROM Table Where Id = @Id) T
WHERE fn_LongRunningFunction(T.ObjectId) = 1
我希望外部where子句对内部查询的结果求值。如何在不将子查询插入到临时表中的情况下执行此操作。
当我执行这个查询时,SQL会对查询求值,就好像它的代码是这样的:
SELECT ObjectId FROM Table Where Id = @Id AND fn_LongRunningFunction(Objec
我对SQL很陌生,并在这里寻求帮助。请看第一张截图。除了country字段之外,前两条记录都有精确的值。第二个截图是我想要的。我想得到第一个(不为空的country)。我还想保留第三条记录,因为它是id 345的唯一记录,尽管它有一个空country。我尝试了下面的查询,但没有得到我想要的结果。
SELECT DISTINCT id, first, last, age, gender, city, state, zip
FROM Person
WHERE country IS NOT NULL
下面是两个测试表的平方:
tl;dr:为什么使用!= 0 NULL 的SQL查询不包括NULL值?
我被留给了JOINing这两张桌子。我希望看到在tableB.field1中有NULL的行,在tableB.field1中有1的行,但是不包括在tableB.field1中有0的所有行。
我认为这个查询(示例6)应该给出这个结果,但是它没有得到空记录。
SELECT * FROM tableA a
LEFT JOIN tableB b ON a.id = b.join_id
WHERE
b.field1 != 0;
我必须使用这个更长的查询(示例4):
SELECT * FROM tableA
我为SQL Server 2012编写了一个查询,用于获取人员的动态列表,并确定他们每天在某些领域工作的时间。当我每次运行一个人的查询时,我得到了很好的结果。然而,如果我在IN子句中传递所有的参数,那么我不仅得到更少的结果,而且一些值是不同的,完全是错误的。
这最终将在SSRS中的报告中运行,但即使直接在SSMS中运行数据,它也会显示出相同的行为。
@People是一个单独的查询,它收集当天实际在该区域的人的列表。@Yesterday和@Today只是日期的变量。
SELECT *
FROM
(SELECT
AdmitType,
Time,