MySQL用另一个条件包装连接条件?

时间:2011-09-24 22:36:56

标签: mysql join

当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

1 个答案:

答案 0 :(得分:1)

您可以使用外部联接,特别是左联接,它将为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

如果在{{1}中没有匹配的行时COUNT(*)为零很重要,则可以将COUNT(us.urlid)替换为url_status(或historySize中的其他列) }}