Php 还包括MySQL SELECT查询中的空行

Php 还包括MySQL SELECT查询中的空行,php,mysql,database,Php,Mysql,Database,我们正在尝试从MySQL数据库的几个表中进行选择 我们的问题是: SELECT r.reviews_id, r.customers_name, r.date_added, rd.reviews_text, r.reviews_rating, c.customers_email_address FROM reviews r, reviews_description rd, customers c WHERE r.custome

我们正在尝试从MySQL数据库的几个表中进行选择

我们的问题是:

SELECT r.reviews_id, 
       r.customers_name,
       r.date_added,
       rd.reviews_text,
       r.reviews_rating,
       c.customers_email_address
FROM reviews r, reviews_description rd, customers c
WHERE r.customers_id = c.customers_id
  AND r.reviews_id = rd.reviews_id
  AND r.products_id = '74'
  AND r.approved='1'
ORDER BY LENGTH(rd.reviews_text) DESC
但是,表
审查
字段
客户id

命令
其中r.customers\u id=c.customers\u id
将其限制为仅包含
customers\u id

我想知道我们如何也可以选择空字段

我们尝试了
其中(r.customers\u id=c.customers\u id)或(r.customers\u id为NULL)
——但这不起作用


提前感谢您的帮助。

不要使用旧的隐式连接语法。使用显式连接-在这种情况下,使用
左连接

select r.reviews_id, r.customers_name, r.date_added, rd.reviews_text, r.reviews_rating, 
       c.customers_email_address 
FROM reviews r
INNER JOIN reviews_description rd ON r.reviews_id = rd.reviews_id
LEFT JOIN customers c ON r.customers_id = c.customers_id 
WHERE r.products_id = '74' 
AND r.approved='1' 
ORDER BY LENGTH(rd.reviews_text) DESC
应该是这样的:

WHERE (r.customers_id = c.customers_id = 0 OR r.customers_id IS NULL)
与此相反:

WHERE (r.customers_id = c.customers_id) OR (r.customers_id IS NULL)

或者条件应该是这样的(r.customers\u id=c.customers\u id或r.customers\u id为NULL),但是,查询似乎有点慢。有没有办法优化这个?谢谢你的帮助。是的,请阅读有关索引的内容。但是,由于您在
order by
中使用了函数,因此只能在
where
子句中的过滤条件上改进查询。感谢您的回复。你认为删除长度函数会提高性能吗?会的。只需删除
orderby
子句。