我做了一个查询,当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/

10-10 09:04