标签: sql-except

Oracle中的EXCEPT关键字

我正在尝试在Oracle 10.1.0.2.0中使用EXCEPT关键字,但不断收到错误"未知命令".我试过谷歌搜索,有人说关键字是MINUS,所以我使用MINUS,但我仍然有同样的错误.任何的想法?谢谢.

所以这是我的查询.我找到了参加所有课程编号> 500的学生的名字

SELECT s.name
FROM Students s
WHERE NOT EXISTS
  (
    SELECT c.id
    FROM Courses c
    WHERE c.number > 500

    MINUS

    SELECT e.course_id
    FROM Enrollment e
    WHERE e.student_id = s.id
  );
Run Code Online (Sandbox Code Playgroud)

sql oracle10g sql-except

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

在mysql中过滤一个组

我有一个表格中的样本数据

Id      Dsc
500001  INSURED
500001  THIRD PARTY
500001  THIRD PARTY
500001  THIRD PARTY
500002  INSURED
500002  THIRD PARTY
500003  INSURED
500004  BROKER
500005  CLAIMANT
Run Code Online (Sandbox Code Playgroud)

我希望提取那些Dsc既不是'保险'也不是'经纪人'的ID.由于两列都有重复数据,我设计了以下查询...

Select Id from table1 where Dsc not in ('Insured', 'Broker')
Except
Select Id from table1 where Dsc in ('Insured', 'Broker')
Run Code Online (Sandbox Code Playgroud)

有没有其他方法可以做到这一点?

sql sql-server sql-except

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

有没有办法将SQL中的EXCEPT语句重写为NOT IN语句?

我学习 SQL 已经几周了,刚刚完成了一个关于使用 IN 和 NOT IN 的家庭作业问题。我设法得到了正确的答案,但是,我使用了 EXCEPT 子句,但我们实际上还不允许使用该子句。据我所知,EXCEPT 和 NOT IN 在 SQL 中是非常相似的语句,但我不明白有什么区别。这是我的查询的一般格式:

SELECT *
FROM table
WHERE x IN (
    SELECT x
    /* ... some subquery*/
    EXCEPT
    SELECT x
    /* ... some other subquery*/ 
)
Run Code Online (Sandbox Code Playgroud)

有没有办法重写这个通用查询而不使用 EXCEPT 语句?EXCEPT 和 NOT IN 一般有何不同?

编辑:另一篇文章似乎有一些很好的信息,但它似乎专注于 EXISTS 而不是 IN,它们有不同的目的,不是吗?

sql sql-except azure-sql-database

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

SQL联合ALL和Except

我在SQL中执行except和union语句时看到一种奇怪的行为。

我有两张桌子

Select * from #old
Run Code Online (Sandbox Code Playgroud)

数据看起来像这样

oid1    oid2    co
   1      11     1
   2      22     1
   3      33     1
   4      55     1

Select * from #new

nid1    nid2    co
   1      11     3
   2      22     1
   3      33     1
   4      44     1
   4      55     1
Run Code Online (Sandbox Code Playgroud)

这是我最后的查询

Select * from #old
    except
    Select * from #new
    union all
    Select * from #new
    except
    Select * from #old
Run Code Online (Sandbox Code Playgroud)

并提供这些记录

oid1    oid2    co
   1      11     3
   4      44     1
Run Code Online (Sandbox Code Playgroud)

我的问题是..不应该在第一个except子句的另一行中:

Select * from #old …
Run Code Online (Sandbox Code Playgroud)

sql union sql-except

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

我们可以阻止 SQL Server 忽略值中的尾随空格吗

我正在审核两个相同结构表中的值。T-SQLEXCEPT语句忽略一个表中某个值的尾随空格,因此这些值不匹配,但也不会出现在我们的审计中。

我尝试寻找改变 SQL 比较列的方式的方法。我做了类似的事情来确保它区分大小写,但找不到可以使其在字段值中包含空格/填充的东西。

示例数据的值为MyTable“产品名称”,而 的RemoteTable值为“产品名称”。

为了快速重现,这是我现在正在做的事情的精简版本:

DECLARE @SampleLocal TABLE(ProductName varchar(50))
DECLARE @RemoteTable TABLE(ProductName varchar(50))

INSERT INTO @SampleLocal (ProductName) VALUES ('Product Name')
INSERT INTO @RemoteTable (ProductName) VALUES ('Product Name ')

SELECT ProductName COLLATE SQL_Latin1_General_CP1_CS_AS ProductName  
FROM @SampleLocal

EXCEPT

SELECT ProductName COLLATE SQL_Latin1_General_CP1_CS_AS ProductName  
FROM @RemoteTable
Run Code Online (Sandbox Code Playgroud)

当前没有返回结果,表明值是相同的。但第二个表中的值末尾有一个空格。

我希望得到一个包含“产品名称”的结果

当我需要比较区分大小写的事物时,我可以添加

COLLATE SQL_Latin1_General_CP1_CS_AS
Run Code Online (Sandbox Code Playgroud)

是否有类似的东西会因为空格而显示不同的值?

sql-server sql-except

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