Php 还包括MySQL SELECT查询中的空行
我们正在尝试从MySQL数据库的几个表中进行选择 我们的问题是: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
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
子句。