由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Database版 - 咋样选一个表中在另一个表中不含有的记录
相关主题
SQL 查询已经解决.谢谢Modeler,mirthc,cheungche请问sql语句能不能实现这样的功能
mysql 问题 (转载)请教set和select 的区别
紧急求助, 关于SQL Server怎样快速得到两个表的交集
SQL combine two tables into one table and add a new column请教大虾问题哈,包子谢哈
error of sql query in MS Access database (转载)菜鸟问题,急
aks a simple SQL question请教高手,包子谢
最近写了不少SQL script,请大牛评价下属于什么水平how to write this query
怎么写个query 把输出变成横排.请问个join的问题
相关话题的讨论汇总
话题: t2话题: value话题: table话题: select话题: where
进入Database版参与讨论
1 (共1页)
m*********a
发帖数: 3299
1
table 1
id value
1 1
1 2
1 3
2 4
table 2
id value
1 1
1 4
1 2
1 4
2 4
选出1 4
s**********o
发帖数: 14359
2
WHERE NOT EXISTS是比较好的
当然 NOT IN (SELECT)也行,但是很不EFFICIENT
m*********a
发帖数: 3299
3
select t1.id, t1.value
from table1 t1
where To_char(t1.id)||'_'||t1.value
not in
(
select To_char(t2.id)||'_'||t2.value
from table2 t2
)

【在 s**********o 的大作中提到】
: WHERE NOT EXISTS是比较好的
: 当然 NOT IN (SELECT)也行,但是很不EFFICIENT

m*********a
发帖数: 3299
4
有不用concat的方法么?
l******n
发帖数: 9344
5
outer join 再filter

【在 m*********a 的大作中提到】
: table 1
: id value
: 1 1
: 1 2
: 1 3
: 2 4
: table 2
: id value
: 1 1
: 1 4

a******g
发帖数: 725
6
我靠,新手?我老这种不玩SQL的也知道用except 或 table join
m*********a
发帖数: 3299
7
是比较新,不然就不会问了,我去看看except是啥
select t1.id, t1.value
from table1 t1
where not exists(
select t2.id,t2.value
from table 2 t2
where t1.id=t2.id and t2.value=t2.value
)

【在 a******g 的大作中提到】
: 我靠,新手?我老这种不玩SQL的也知道用except 或 table join
m*********a
发帖数: 3299
8
我看not exist的效率不行,每个row 都要去做not exist的subquery?

【在 s**********o 的大作中提到】
: WHERE NOT EXISTS是比较好的
: 当然 NOT IN (SELECT)也行,但是很不EFFICIENT

s**********o
发帖数: 14359
9
When using “NOT IN”, the query performs nested full table scans, whereas
for “NOT EXISTS”, query can use an index within the sub-query.
你那个To_char(t2.id)||'_'||t2.value每行都要构造一个新VALUE还没有INDEX
非常差的PERFORMANCE,如果值表一是1.0,表2是1.00,你的NOT IN都不WORK的

【在 m*********a 的大作中提到】
: 我看not exist的效率不行,每个row 都要去做not exist的subquery?
m*********a
发帖数: 3299
10
这个concat是有问题,我现在用not exists。
估计都是N*M的复杂度,速度差不多
我现在想的outer join是咋写的

【在 s**********o 的大作中提到】
: When using “NOT IN”, the query performs nested full table scans, whereas
: for “NOT EXISTS”, query can use an index within the sub-query.
: 你那个To_char(t2.id)||'_'||t2.value每行都要构造一个新VALUE还没有INDEX
: 非常差的PERFORMANCE,如果值表一是1.0,表2是1.00,你的NOT IN都不WORK的

相关主题
aks a simple SQL question请问sql语句能不能实现这样的功能
最近写了不少SQL script,请大牛评价下属于什么水平请教set和select 的区别
怎么写个query 把输出变成横排.怎样快速得到两个表的交集
进入Database版参与讨论
B*****g
发帖数: 34098
11
用sql server的就是悲哀,我教10几年前就解决了这个问题,NOT EXISTS使劲用

【在 s**********o 的大作中提到】
: When using “NOT IN”, the query performs nested full table scans, whereas
: for “NOT EXISTS”, query can use an index within the sub-query.
: 你那个To_char(t2.id)||'_'||t2.value每行都要构造一个新VALUE还没有INDEX
: 非常差的PERFORMANCE,如果值表一是1.0,表2是1.00,你的NOT IN都不WORK的

s**********o
发帖数: 14359
12
except/minus容易出错的,比如VALUE是NULL的时候就给弄没了
m******u
发帖数: 12400
13
你这是说的什么意思啊?SQL server也有exists|no exists用法的呀。
发信人: Beijing (我是猪,听说猪是被祝福的), 信区: Database
标 题: Re: 咋样选一个表中在另一个表中不含有的记录
发信站: BBS 未名空间站 (Wed Jul 1 16:05:03 2015, 美东)
用sql server的就是悲哀,我教10几年前就解决了这个问题,NOT EXISTS使劲用
m******u
发帖数: 12400
14
这是经典面试题啊:找出从来没买过东西的顾客,找出从没卖出过东西的营销员。etc
很有用的,现在定型的query是怎样的?那位大牛可以贴一个上来吗?谢谢!
n***l
发帖数: 143
15
How about this one?
SELECT t2.id, t2.value
FROM t2 LEFT JOIN t1
ON t1.id=t2.id AND t1.value=t2.value
WHERE t1.id IS NULL
s**********o
发帖数: 14359
16
你假设了T2里有的T1里肯定有,万一T1, T2根本就JOIN不上呢
比如
T1:
2,1
T2:
1,2

【在 n***l 的大作中提到】
: How about this one?
: SELECT t2.id, t2.value
: FROM t2 LEFT JOIN t1
: ON t1.id=t2.id AND t1.value=t2.value
: WHERE t1.id IS NULL

m******u
发帖数: 12400
17
smallburrito不要指出问题不给解决方法吧。你指出的这个问题的确非常重要,我想知
道该怎么办。
m*********a
发帖数: 3299
18
这个left join不是可以选出t2 1,2么,
我在mysql试了一下是对的

【在 s**********o 的大作中提到】
: 你假设了T2里有的T1里肯定有,万一T1, T2根本就JOIN不上呢
: 比如
: T1:
: 2,1
: T2:
: 1,2

n****f
发帖数: 3580
19
In Oracel, this is working:
select t2.*
from t1 , t2
where t2.id=t1.id(+)
and t2.val=t1.val(+)
and t1.id is null

【在 m*********a 的大作中提到】
: table 1
: id value
: 1 1
: 1 2
: 1 3
: 2 4
: table 2
: id value
: 1 1
: 1 4

m*****y
发帖数: 229
20
sql server 的话,这个应该work。
select t2.*
from table2 t2
where not exists (select 1 from table1 t1 where t1.id=t2.id and t1.value=t2.
value)
1 (共1页)
进入Database版参与讨论
相关主题
请问个join的问题error of sql query in MS Access database (转载)
请求SQL语句aks a simple SQL question
问个 sp_send_dbmail 的问题最近写了不少SQL script,请大牛评价下属于什么水平
数据库查询一个小问题怎么写个query 把输出变成横排.
SQL 查询已经解决.谢谢Modeler,mirthc,cheungche请问sql语句能不能实现这样的功能
mysql 问题 (转载)请教set和select 的区别
紧急求助, 关于SQL Server怎样快速得到两个表的交集
SQL combine two tables into one table and add a new column请教大虾问题哈,包子谢哈
相关话题的讨论汇总
话题: t2话题: value话题: table话题: select话题: where