我有一个查询要在其中排除特定值(在此示例中为“Mat”)
查询工作正常,没有子查询:
SELECT test.SAME , test.Nationality, test.Name, coalesce(test2.Job,'')jobb
FROM test
LEFT JOIN test2
ON test.noID=test2.noID
WHERE test.SAME = 555 and test.Name NOT IN (
SELECT *
FROM test
WHERE test.NAME = "Mat"
)
group by SAME , name
order by same desc
此处示例:
答案 0 :(得分:0)
如果您想将确切的名称与 Mat :
匹配,则可以执行此操作SELECT test.SAME , test.Nationality, test.Name, coalesce(test2.Job,'')jobb
FROM test
LEFT JOIN test2
ON test.noID=test2.noID
WHERE test.SAME = 555 and test.Name != "Mat"
group by SAME , name
order by same desc
如果你想要排除所有包含 Mat 的内容,那么:
SELECT test.SAME , test.Nationality, test.Name, coalesce(test2.Job,'')jobb
FROM test
LEFT JOIN test2
ON test.noID=test2.noID
WHERE test.SAME = 555 and test.Name NOT LIKE '%Mat%'
group by SAME , name
order by same desc
如果您想要排除以 Mat 开头,那么:
SELECT test.SAME , test.Nationality, test.Name, coalesce(test2.Job,'')jobb
FROM test
LEFT JOIN test2
ON test.noID=test2.noID
WHERE test.SAME = 555 and test.Name NOT LIKE 'Mat%'
group by SAME , name
order by same desc
答案 1 :(得分:0)
您可以使用NOT LIKE
statement:
SELECT test.SAME , test.Nationality, test.Name, coalesce(test2.Job,'')jobb
FROM test
LEFT JOIN test2
ON test.noID=test2.noID
WHERE test.SAME = 555 and test.Name not like 'Mat'
group by SAME , name
order by same desc
或<>
或!=
operator:
SELECT test.SAME , test.Nationality, test.Name, coalesce(test2.Job,'')jobb
FROM test
LEFT JOIN test2
ON test.noID=test2.noID
WHERE test.SAME = 555 and test.Name <> 'Mat'
group by SAME , name
order by same desc
答案 2 :(得分:0)
您的查询应该是: -
SELECT test.SAME , test.Nationality, test.Name, coalesce(test2.Job,'')jobb
FROM test
LEFT JOIN test2
ON test.noID=test2.noID
WHERE test.SAME = 555 and test.Name NOT IN (
SELECT NAME
FROM test
WHERE test.NAME = "Mat"
)
group by SAME , name
order by same desc
答案 3 :(得分:0)
子查询将无效,因为您在子查询中给出了select *,但在外部查询中,您只有一列要匹配,即test.Name。如果您将子查询放入(SELECT test.Name FROM test WHERE test.NAME =&#34; Mat&#34;)那么整个查询就可以了。但顺便说一句,这里不需要子查询来获得你想要的结果。