0

我有以下工作 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子句添加的行。但这不起作用 - 实际上它与以前没有区别,但返回相同的行。

如何WHERE在这个 sql 语句中正确包含这些规则?

笔记

该行films.youtube IS NOT NULL AND films.youtube <> ''正在检查特定单元格是否为空。这是在这个问题的帮助下完成的

4

1 回答 1

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
于 2013-06-30T16:16:50.073 回答