相关疑难解决方法(0)

MySQL错误:使用GROUP BY HAVING的NOT IN +子查询不返回任何内容

我在这张桌子上查询:

SKU
aaaa
bbbb
bbbb
NULL
Run Code Online (Sandbox Code Playgroud)

这是查询:

select *
from TEST as N                                      
where  N.SKU NOT IN (select SKU
                     from TEST
                     group by SKU
                     having count(*)>1);
Run Code Online (Sandbox Code Playgroud)

我希望查询返回'aaaa',但是它不返回任何内容.

我期望的原因是因为下面的子查询只返回'bbbb':

select SKU
from TEST
group by SKU
having count(*)>1   
Run Code Online (Sandbox Code Playgroud)

因此,'aaaa'不在子查询结果中.

要显示错误,请在MySQL IDE中复制并粘贴这些语句以创建模式:

drop table if exists TEST;
create table TEST(
SKU varchar(255)
);
insert into TEST values('aaaa'),('bbbb'),('bbbb'),(NULL);
Run Code Online (Sandbox Code Playgroud)

mysql

5
推荐指数
1
解决办法
115
查看次数

IN子句,TSQL/SQL Server中的NULL处理?

假设有一个这样的表:

f1      f2
----------
1       3
4       8
6       4
NULL    1
Run Code Online (Sandbox Code Playgroud)

以下查询按预期工作:

SELECT f2
  FROM Table_1 a
 WHERE NOT EXISTS (SELECT *
                     FROM Table_1 
                    WHERE a.f2 = f1)
Run Code Online (Sandbox Code Playgroud)

...和结果集是:

f2
---
3
8
Run Code Online (Sandbox Code Playgroud)

...但类似的查询IN没有返回任何内容:

SELECT f2
  FROM Table_1 a
 WHERE f2 NOT IN (SELECT b.f1 
                    FROM Table_1 b)
Run Code Online (Sandbox Code Playgroud)

有什么问题 ?

t-sql sql-server exists sql-server-2008

4
推荐指数
1
解决办法
2463
查看次数

仅在值不存在时返回行

我有2张桌子 - reservation:

   id  | some_other_column
   ----+------------------
   1   | value
   2   | value
   3   | value
Run Code Online (Sandbox Code Playgroud)

第二个表 - reservation_log:

   id  | reservation_id | change_type
   ----+----------------+-------------
   1   | 1              | create
   2   | 2              | create
   3   | 3              | create
   4   | 1              | cancel
   5   | 2              | cancel
Run Code Online (Sandbox Code Playgroud)

我只需选择未取消的预订(在此示例中仅为ID 3).我可以通过一个简单的WHERE change_type = cancel条件轻松选择取消,但我正在努力与NOT取消,因为简单WHERE在这里不起作用.

mysql sql

4
推荐指数
1
解决办法
5720
查看次数

为什么null不在(1,2,3)中

它是预期,当我测试,如果空值是不是在列表中,结果始终是假的.

那是:

 select 'Hello world' where null not in(1,2,3);
Run Code Online (Sandbox Code Playgroud)

不要选择任何内容,因为(1,2,3)中的null不为false.

我不明白这一点,因为列表(1,2,3)不包含任何未定义的值(null)所以我希望不在(1,2,3)中的null为真.那么为什么这是假的?

sql postgresql

4
推荐指数
1
解决办法
612
查看次数

SQL Server联接在其他表上不存在的位置

+-------------------+   +-------------------+   +---------------------+
|      Service      |   |       Asset       |   |     AssetService    |
+-------------------+   +-------------------+   +---------------------+
| Id   |    Name    |   | Id   |    Name    |   | AssetId | ServiceId |
|-------------------|   |-------------------|   |---------------------|
| 1    |  Service 1 |   | 1    |   Asset 1  |   |     1   |     1     |
| 2    |  Service 2 |   | 2    |   Asset 2  |   |     1   |     2     |
| 3    |  Service 3 |   | 3    |   Asset 3  |   | …
Run Code Online (Sandbox Code Playgroud)

sql sql-server inner-join

4
推荐指数
2
解决办法
3363
查看次数

MySQL"NOT IN"查询不起作用

我有三列的表:taxon_id,scientific_name_element_id,和parent_id.我想找到孩子而不是父母的元素,所以结构的终点.

我找到了一些建议我使用的消息来源

select taxon_id 
       from  taxon_name_element
       where taxon_id not in 
                          (select parent_id from taxon_name_element)
Run Code Online (Sandbox Code Playgroud)

但这不起作用,当我能够实际浏览条目并看到有例如a taxon_id=1和NO 时,我得到一个空集.parent_id=1

相反,当我看到parent_id中的taxon_id是什么时,我得到一个非空的结果集

我究竟做错了什么?我怎样才能解决这个问题?

php mysql database subtraction

3
推荐指数
1
解决办法
9035
查看次数

更有效的方式使用sql OR?

我想知道他们是否更好地做这样的事情:

SELECT * 
FROM tableA 
WHERE colour='red' OR colour='greed' OR colour='blue' OR colour='yellow' 
Run Code Online (Sandbox Code Playgroud)

他们是这样的:

SELECT * 
FROM tableA 
WHERE colour='red''greed''yellow'
Run Code Online (Sandbox Code Playgroud)

提前喝彩

sql

2
推荐指数
1
解决办法
68
查看次数

ORACLE SQL 中 NOT IN 与 NULL 值的困境

当我使用这段代码时

WHEN col1 NOT IN (SELECT col2 FROM table_name) THEN 'something'
Run Code Online (Sandbox Code Playgroud)

知道 col2 包含 NULL 值,它没有给出预期结果,为什么会发生这种情况?将 IN 与 NULL 值一起使用是否会扰乱内存中存储的数据还是什么?

sql oracle null sql-in

2
推荐指数
1
解决办法
5839
查看次数

如果我需要选择数据"EXCEPT"其他一些数据,我应该采用什么方法?

如果我需要选择一个数据来覆盖其他一些数据,我应该采用什么方法来构建我的SQL查询?

例如,我的

我想要从数据库中选择所有数据除了这个结果集:

SELECT *
FROM table1
WHERE table1.MarketTYpe = 'EmergingMarkets'
AND IsBigOne = 1
AND MarketVolume = 'MIDDLE'
AND SomeClass = 'ThirdClass'
Run Code Online (Sandbox Code Playgroud)

我应该用吗?

  • NOT IN(aboe结果集)
  • 或者shoudl我得到条件的反转!= = = inseat =等.
  • 要么 ?

你能建议吗?

sql t-sql filtering where-clause

1
推荐指数
1
解决办法
104
查看次数

为什么在此选择查询中未选择任何内容?

如果我跑

Select distinct CompanyID from Device 
Run Code Online (Sandbox Code Playgroud)

我得到6排.如果我跑

Select CompanyID from Company
Run Code Online (Sandbox Code Playgroud)

我得到了8441行.如果我运行以下内容:

如果我跑

Select CompanyID
from Company where CompanyID NOT IN 
( 
   Select distinct CompanyID from Device
)
Run Code Online (Sandbox Code Playgroud)

我应该让那些不在原始选择声明中的8435家公司,对吗?

但是,当我运行它时,我得到0行.这是什么问题?上述6个结果中的一个是null,但这无关紧要.

谢谢!

编辑:有了Marc-s的帮助,我能够得到以下声明成为我需要的东西,我仍然觉得这个查询还有一个额外的步骤,有人想加入这个吗?

DELETE from Company where CompanyID NOT IN
(
Select C.CompanyID 
from Company C where C.CompanyID IN 
( 
  Select distinct CompanyID from Device
)
OR CompanyID IN
(
  Select distinct CustomerID from Device
)
OR CompanyID IN
(
  Select distinct CompanyID from AssignedCompanies
 )
 )
Run Code Online (Sandbox Code Playgroud)

sql sql-server-2008-r2

1
推荐指数
1
解决办法
136
查看次数

IN子句中的空值 - Teradata

这是我的Table1

personid
1
?
2
3
4
?
6
Run Code Online (Sandbox Code Playgroud)

这是我的查询

select * 
from table2
where personid not in 
(
select personid
from table1
)
Run Code Online (Sandbox Code Playgroud)

结果是 nothing


这是我的第二个查询

select * 
from table2
where personid not in 
(
select personid
from table1         
where personid is not null
)
Run Code Online (Sandbox Code Playgroud)

结果是 ok


问题:为什么第一个查询不起作用?我看不出任何逻辑问题.是的,是否可以null提升teradata?

sql teradata

1
推荐指数
1
解决办法
2762
查看次数