我做了一个查询,当url_status表中至少有一行u.urlid=us.urls时,它可以根据需要工作,但是如果这不是真的,它就不工作。我能做些什么来克服这个?
SELECT u.*, COUNT(*) AS historySize
FROM host_urls u, url_status us
WHERE u.publicationid = 1
AND us.urlid = u.urlid
GROUP BY u.urlid
最佳答案
您可以使用外部联接,特别是左联接,它将为host_urls
中的每一行返回至少一个结果行,即使它在url_status
中没有对应的行。
SELECT u.*, COUNT(*) AS historySize
FROM host_urls u
LEFT JOIN url_status us
ON us.urlid = u.urlid
WHERE u.publicationid = 1
GROUP BY u.urlid
如果在
COUNT(*)
中没有匹配行时COUNT(us.urlid)
必须为零,则可以将url_status
替换为historySize
(或url_status
中的另一列)。关于mysql - MySQL包装连接条件与另一个条件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7542373/