Access SQL 避免使用 Instr = 0 或 Not Like 的笛卡尔积
Access SQL Avoid Cartesian Product using Instr = 0 or Not Like
我有两张桌子
T1 T2
list remark
abc this is my list
def i have abc remark
ghi other than I have def comment
jkl ghi is also there
and this one will
and this one too
我正在尝试编写一个查询,该查询将 return T2 中与 T1 中的列表不同的所有备注。
我已经尝试了 Instr
和 Join with Not Like
,但是卡在笛卡尔积问题上。
运行 一个查询,其中 Instr = True return 是我期望的列表
SELECT DISTINCT t2.remark, InStr([t2].[remark],[t1].[list]) AS [Check]
FROM t2, t1
WHERE (((InStr([t2].[remark],[t1].[list]))=True));
ghi is also there
I have abc remark
other than I have def comment
但是 运行 False 是我得到所有结果的地方,由于笛卡尔积:
与使用 Not Like
相同
SELECT DISTINCT t2.remark
FROM t2 LEFT JOIN t1 ON t2.Remark NOT LIKE "*" & t1.List & "*"
我也尝试过子查询,但没有成功。知道如何使用 Access SQL 解决这个问题吗?
我想我可以用 TRUE 编写语句,然后再执行另一个查询,其中备注不等于我的第一个查询的结果,但这似乎有点低效。
通常的方式(至少在 Access 中)是这样的:
SELECT tr.remark
FROM t2 LEFT JOIN t1
ON t2.Remark LIKE "*" & t1.List & "*"
WHERE t1.List IS NULL
尽管我不确定我是否曾经将此与 LIKE
一起使用过。
@Andre 比我快了几分钟。
这似乎也有效 returns 3 条记录
SELECT remark
, list
FROM T1 LEFT JOIN T2 ON INSTR(T2.remark,T1.list)>0
- 我有 abc 备注 / abc
- 除了我有 def 评论 / def
- ghi 也有 / ghi
抱歉... returns 相反。
使用:
SELECT remark
, list
FROM T2 LEFT JOIN T1 ON INSTR(T2.remark,T1.list)>0
WHERE list IS NULL
- 这是我的列表/NULL
- 而这个将/NULL
- 还有这个/NULL
我有两张桌子
T1 T2
list remark
abc this is my list
def i have abc remark
ghi other than I have def comment
jkl ghi is also there
and this one will
and this one too
我正在尝试编写一个查询,该查询将 return T2 中与 T1 中的列表不同的所有备注。
我已经尝试了 Instr
和 Join with Not Like
,但是卡在笛卡尔积问题上。
运行 一个查询,其中 Instr = True return 是我期望的列表
SELECT DISTINCT t2.remark, InStr([t2].[remark],[t1].[list]) AS [Check]
FROM t2, t1
WHERE (((InStr([t2].[remark],[t1].[list]))=True));
ghi is also there
I have abc remark
other than I have def comment
但是 运行 False 是我得到所有结果的地方,由于笛卡尔积:
与使用 Not Like
SELECT DISTINCT t2.remark
FROM t2 LEFT JOIN t1 ON t2.Remark NOT LIKE "*" & t1.List & "*"
我也尝试过子查询,但没有成功。知道如何使用 Access SQL 解决这个问题吗?
我想我可以用 TRUE 编写语句,然后再执行另一个查询,其中备注不等于我的第一个查询的结果,但这似乎有点低效。
通常的方式(至少在 Access 中)是这样的:
SELECT tr.remark
FROM t2 LEFT JOIN t1
ON t2.Remark LIKE "*" & t1.List & "*"
WHERE t1.List IS NULL
尽管我不确定我是否曾经将此与 LIKE
一起使用过。
@Andre 比我快了几分钟。
这似乎也有效 returns 3 条记录
SELECT remark
, list
FROM T1 LEFT JOIN T2 ON INSTR(T2.remark,T1.list)>0
- 我有 abc 备注 / abc
- 除了我有 def 评论 / def
- ghi 也有 / ghi
抱歉... returns 相反。
使用:
SELECT remark
, list
FROM T2 LEFT JOIN T1 ON INSTR(T2.remark,T1.list)>0
WHERE list IS NULL
- 这是我的列表/NULL
- 而这个将/NULL
- 还有这个/NULL