2013-06-30 58 views
0

我有以下工作SQL序列:包括`WHERE`在加入SQL序列

SELECT *, films.category AS filmCategory 
FROM (SELECT * 
     FROM films 
     ORDER BY `unique` ASC 
     LIMIT 6, 4) films 
LEFT OUTER JOIN items ON items.unique = films.ref 
ORDER BY films.unique ASC 

這種運作良好,並選擇從數據庫中正確的四大要素。但是,我有一些規則,我檢查使用WHERE,我無法工作。我做了以下操作:

SELECT *, films.category AS filmCategory 
FROM (SELECT * 
     FROM films 
     ORDER BY `unique` ASC 
     LIMIT 6, 4) films 
LEFT OUTER JOIN items ON items.unique = films.ref 
WHERE films.youtube IS NOT NULL AND films.youtube <> '' 
ORDER BY films.unique ASC 

其中唯一的區別是與WHERE子句相加的行。但這不起作用 - 實際上它與以前沒有區別,但返回相同的行。

如何在這個sql語句中正確包含這些WHERE規則?

注意

films.youtube IS NOT NULL AND films.youtube <> ''被檢查,如果一個特定的單元格爲空。這是在this question

+0

以何種方式是不工作?它是否返回具有「films.youtube」的NULL或「空」值的行? – BellevueBob

回答

2

的幫助下完成的。也許您正在尋找子查詢中的where子句?這樣,limit將應用您的where條款。

SELECT *, films.category AS filmCategory 
FROM (SELECT * 
     FROM films 
     WHERE films.youtube IS NOT NULL AND films.youtube <> '' 
     ORDER BY `unique` ASC 
     LIMIT 6, 4) films 
LEFT OUTER JOIN items ON items.unique = films.ref 
ORDER BY films.unique ASC 

一個小的附加建議。您可以簡化:

WHERE films.youtube IS NOT NULL AND films.youtube <> '' 

WHERE films.youtube > '' 

因爲null > ''是不正確的或者更可讀(但unknown):

WHERE length(films.youtube) > 0 
+0

更簡單:'WHERE films.youtube>''' –