2013-04-18 67 views
0

我有两个表格,我将其称为table1和table2。 Table1有2个字段,id和auth,table2也有两个字段,id和关键字。请注意table1和table2的id匹配。 这是我的查询:SQL查询结果全文搜索结果

SELECT id, MATCH(keywords) AGAINST('example') FROM table2 WHERE MATCH(keywords) AGAINST('example') 

我怎么排除结果,其中同一ID的身份验证(表1)不是1?

+2

你能告诉我们你正在使用的RDBS - MySQL和MS SQL,甲骨文..? – KenD

+0

对不起,MySQL。 – user2294763

回答

1
SELECT id, MATCH(keywords) AGAINST('example') 
    FROM table2 t2 
WHERE MATCH(keywords) AGAINST('example') 
    AND NOT EXISTS (select 1 from table1 t1 where t1.id = t2.id and t1.auth != 1) 
+0

非常感谢你! – user2294763

+0

嘿皮特,最后一行中“从table1 ....选择1”的目的是什么? –

+0

Hi @Evan,提问者希望排除其中table1.auth不等于1的匹配行。子查询从auth字段不是1的table1获取所有匹配的行,并且“NOT EXISTS”子句排除它们。 'select 1'部分只是我使用的一个约定;你可以用几乎任何东西代替它:'select *'或'select'x''都可以。 – Peter

0
SELECT * 
    FROM table1 t1 
    INNER JOIN table2 t2 
    ON t1.id != t2.id