Office中国论坛/Access中国论坛

标题: 求一个查询语句 [打印本页]

作者: 情比金坚    时间: 2007-12-7 20:59
标题: 求一个查询语句
(不好意思,原来的描述有错误)

有二个表;
表1: 字段1,数字型,有重复; 字段2,数字型,有重复
表2: 字段1,数字型,有重复; 字段2,数字型,有重复

求查询:表1的字段1=1,字段2与(表2的字段1=1中的字段2)不重复的内容

要一个查询完成,不要用not in (因为那个太慢)

例子在4楼,不知道我表达清楚了没?
表1的字段1=1成为一个数据集
表2的字段1=1成为一个数据集,
要比较这两个数据集中不重复的字段2

要是分步解决可以实现,但是我希望一条语句搞定.

[ 本帖最后由 情比金坚 于 2007-12-8 02:47 编辑 ]
作者: andymark    时间: 2007-12-7 21:26
能上传例子吗
作者: Victor_Duane    时间: 2007-12-7 21:34
SELECT [qid]-[qid2] AS qidx, [qty]-[qty2] AS qtyx
FROM tbl1 INNER JOIN tbl2 ON tbl1.qid = tbl2.qid2
WHERE ((([qid]-[qid2])<>0)) OR ((([qty]-[qty2])<>0));
  这样行不行
作者: Victor_Duane    时间: 2007-12-7 21:39
对了qid-qid2是多余的,因为是内联的关系,你可以设成左联或右联
这样就筛除了ID不同的值,然后第二个字段相减一下如果不是0就是不同了
作者: Victor_Duane    时间: 2007-12-7 21:40
如果第二字段是文本,可用STRCOMP这个函数来对比数据
作者: 情比金坚    时间: 2007-12-8 02:38
[attach]27152[/attach]
作者: sgrshh29    时间: 2007-12-8 07:43
如果只是要找出第一个表中符合条件的纪录,用下面的查询试试。如果要同时找出第一个表和第二个表中符合条件的纪录,可以在这个查询基础上用联合查询。
select a.*
from [select * from tab1 where tb1_lesson=1;]. as a left join [select * from tab2 where tab2_lesson=1;]. as b on a.tb1_word = b.tab2_word
where b.tab2_word is null
作者: Victor_Duane    时间: 2007-12-8 08:47
不是很明白,你要得到什么结果了
作者: andymark    时间: 2007-12-8 20:12
不知是不是你要的结果
  1. SELECT a.tb1_Lesson, a.tb1_Word
  2. FROM tab1 AS a LEFT JOIN [SELECT tab1.tb1_Lesson, tab1.tb1_Word
  3. FROM tab1 INNER JOIN tab2 ON (tab1.tb1_Word = tab2.tab2_word) AND (tab1.tb1_Lesson = tab2.tab2_lesson)
  4. ]. AS b ON (a.tb1_Word = b.tb1_Word) AND (a.tb1_Lesson = b.tb1_Lesson)
  5. WHERE (((b.tb1_Word) Is Null))
  6. ORDER BY a.tb1_Lesson, a.tb1_Word
复制代码

作者: 情比金坚    时间: 2007-12-8 22:18
谢谢!!
作者: zhiyan    时间: 2007-12-9 01:20
SELECT [qid]-[qid2] AS qidx, [qty]-[qty2] AS qtyx
FROM tbl1 INNER JOIN tbl2 ON tbl1.qid = tbl2.qid2
WHERE ((([qid]-[qid2])<>0)) OR ((([qty]-[qty2])<>0));
作者: Victor_Duane    时间: 2007-12-10 13:57
最终是什么答案???




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3