mysql - MySQL包装连接条件与另一个条件?

标签 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

最佳答案

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

相关文章:

mysql - 如何从多个表中选择所有数据?

MySQL join 查询三张表

php - 在 PHP MySQL 上显示、连接、计数、分组 6 个表

mysql - 想要忽略两个表中常见的行重复

python - Pandas 使用 dfA 列合并 == dfB 索引

mysql - ZF 中的多列排序?

php - 查询从其他表中获取相应的用户 ID

PHP 检查同一个表中的 2 个值

php - 如何通过选择顶级类别来检索属于子类别的项目?

mysql - 多次 JOIN 未返回预期结果