我有两个包含以下架构的表
field1 | FIELD2
field2 |字段3
我想做的是以下内容:
获取 field2 AND field3 FROM table2如果没有table1.field2 = table2.field2 AND table1.field ='x'
演练中:
field1 | FIELD2
1 |东西
1 | somethingelse
2 |另一
field2 |字段3
又是另一个to_get
在这个例子中,我想得到'又一个'和'to_get'因为table2中没有字段field2 = 又一个而查询中我的'x'这是问题,我将检索我想要的信息的2倍,因为table1 中有两次field1 ='1'。所以,我的查询将另一个,to_get;而另一个,to_get ,因为重复。我尝试使用DISTINCT
和LIMIT
,但这不起作用,因为它应用于table2中的字段,而不是table1中的字段。因此,如果我在table1中有3行 field1 = 1 ,distinct
或limit
将“擦除”其中一行并检索两个又一个,to_get;还有,to_get 。如果我有10行,其中field1 ='1',它将检索9次另一个,to_get 。如果有一行“field1 ='1'”和“field2 ='yetanother'”那么我希望查询不返回任何内容(因为field2是共同的)。我怎样才能做到这一点?我不知道这实际上是否容易或困难,但我真的觉得我在这里失踪并弄乱了一些我忘记了......
答案 0 :(得分:0)
试试这个同性恋
SELECT DISTINCT * /* select all */
FROM table1 t1, table2 t2 /* from these 2 tables */
WHERE t1.field2 <> t2.field2 /* where t1 field1 != t2 field1 */
AND t1.field1 = 'x'; /* and t1.field 1 is X */
让我知道它是否适合你。
答案 1 :(得分:0)
只需使用not exists
:
select t2.*
from table2 t2
where not exists (select 1
from table1 t1
where t1.field2 = t2.field2 and t1.field = 'x'
);