2017-12-27 270 views
1

我有以下SQL:SQL SELECT项目,而不字符

SELECT 
    M.* 
FROM 
    (
    SELECT MAX(counter) AS FirstUserDate, imdb_id, language, season, aufloesung, episode 
    FROM autofehlerserie 
    GROUP BY imdb_id, language 
    ) foo 
    JOIN 
    autofehlerserie M ON foo.imdb_id = M.imdb_id AND foo.language = M.language 
ORDER BY 
    foo.FirstUserDate DESC, M.imdb_id, M.aufloesung, cast(M.season as int), cast(M.episode as int) 

但我只想要SELECT items WHERE marker not = "D"

在那里我有添加此此select查询?

+1

您可以用'<>'来表示“不等于”。例如:'SELECT * FROM table WHERE marker <>'D''。这是你想要做的吗? – RToyo

+0

但是我必须添加这个吗? – SebastianHannes

+0

标记在sql“autofehlerserie” – SebastianHannes

回答

2

使用它象下面这样:

SELECT 
    M.* 
FROM 
    (
    SELECT MAX(counter) AS FirstUserDate, imdb_id, language, season, aufloesung, episode 
    FROM autofehlerserie 
    WHERE marker <> 'D' 
    GROUP BY imdb_id, language, season, aufloesung, episode 
    ) foo 
    JOIN 
    autofehlerserie M ON foo.imdb_id = M.imdb_id AND foo.language = M.language and M.marker <> 'D' 
ORDER BY 
    foo.FirstUserDate DESC, M.imdb_id, M.aufloesung, cast(M.season as int), cast(M.episode as int) 
+0

是什么让你认为只能检查标记才能找到排序键?我宁愿认为OP也希望它应用于主查询。 –

+0

但我不认为它需要在主查询中添加该条件,因为OP正在使用'INNER JOIN',整个查询将产生结果与'marker'>'D'' –

+0

我看到它的所有无论如何,marker =“D”!这不是解决方案! – SebastianHannes

0

我想你可能真的想:

select m.* 
from autofehlerserie m 
where not exists (select 1 
        from autofehlerserie m2 
        where m2.imdb_id = m.imdb_id AND m2.language = m.language and 
         m2.marker = 'D' 
       ); 

这将返回表中的所有行,其中有没有其他行具有相同的imdb_idlanguage其是'D'