2017-12-27 173 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'