Mysql 如何查询不存在的内容?

Mysql 如何查询不存在的内容?,mysql,Mysql,我试图查询一个示例数据库,以查找没有域的站点 我们通过domains.site=sites.id知道域与哪个站点关联。站点和域之间没有类似的变量 所以,我尝试了这个和其他几个连接/何处过滤。或者,它输出的条目数是两个表的实际条目数的50倍,或者什么也不输出。这是前者 SELECT sites.name, domains.domain FROM sites INNER JOIN domains ON sites.id != domains.site WHERE sites.is_deleted

我试图查询一个示例数据库,以查找没有域的站点

我们通过domains.site=sites.id知道域与哪个站点关联。站点和域之间没有类似的变量

所以,我尝试了这个和其他几个连接/何处过滤。或者,它输出的条目数是两个表的实际条目数的50倍,或者什么也不输出。这是前者

SELECT sites.name, domains.domain FROM sites 
INNER JOIN domains
ON sites.id != domains.site
WHERE sites.is_deleted = 0 AND sites.id != domains.site
这是后者的一个例子,它什么也不输出

SELECT sites.name, domains.domain FROM sites 
LEFT JOIN domains
ON sites.id != domains.site
WHERE sites.is_deleted = 0 AND site = NULL
我显然遗漏了一些东西,因为没有与站点相关联的域,所以只能输出站点名称和NULL


当然,这可能是一个棘手的问题,没有没有没有域的站点。

对于您的查询类型,您需要使用左连接从数据存在的情况下应该有效的查询开始,然后添加数据不存在的条件。因此:

SELECT sites.name, domains.domain FROM sites 
    LEFT JOIN domains
    ON sites.id = domains.site  /* <--- this is where you got it wrong */
WHERE sites.is_deleted = 0
    AND domains.site IS NULL;

检查某个内容是否为null使用它自己的is,而不是=。整洁的好吧,至少它返回了合理数量的条目10,这听起来很方便,可以作为答案。非常感谢。