我想合并两个表,并从内部联接的结果表中减go 左联接结果表中的订单数.

WITH t1 AS (
    SELECT *
    FROM orders
    LEFT JOIN food ON orders.id = food.id
),
t2 AS (
    SELECT *
    FROM orders
    INNER JOIN food ON orders.id = food.id
)

SELECT
/* now what? */   

现在我想减go 两个表中的行数.

我不知道该怎么做,我是否应该再次加入表格并做减法,有没有更简单的方法?

推荐答案

你甚至不需要两个独立的问题来回答你的问题.左联接和内联接之间结果集的唯一区别是前者将保留不映射的顺序记录.所以,你可以简单地写:

-- query #3

SELECT *
FROM orders o
LEFT JOIN food f
    ON f.id = o.id
WHERE f.id IS NULL;

如果将上面的结果集与内部联接查询#2结合起来,将在WHERE子句中得到总的左联接查询#1结果集.

所以count(查询#1)=count(查询#2)+count(查询#3)

Mysql相关问答推荐

如何将MySQL与AS&Quot;语法一起用于存储过程返回的表?

SQL-从一个字段中 Select 值,但另一个字段中不包含零值

MySQL滑动窗口动态间隔?

无法连接到扩展坞MySQL Unix套接字

使用字符串文字与使用日期文字时的SQL行为

为什么歌曲详细信息未显示在 Liked.handlebars 视图中?

MySQL中的where语句会 destruct 全外连接.

Mysql根据文本语言或行数将列拆分为多列

使用来自另一个表 mysql 的值将新行插入到表中

MySQL - 如何查询涉及前面计算值的表结果

基于 3 个条件 Select 3 行的最佳 MySQL 索引和查询

PHP,MySQL 错误:列计数与第 1 行的值计数不匹配

通过数据库级​​别本身的查询反序列化

如何从 MySQL Workbench 中的图表生成 SQL 脚本?

计算执行的查询数

将sql查询的结果写入mysql中的文件

如何在 MySQL 中删除此索引?

如何通过一个语句描述数据库中的所有表?

按 COUNT(*) 过滤?

获得上个月的第一天和最后一天的最佳方式?