【发布时间】:2021-11-08 06:07:39
【问题描述】:
我有这个 MySQL 请求,要求所有商店在特定日期开具发票:
SELECT sh__shop.id AS shop_id, sh__shop.name,
sh__shop_invoice.*
FROM sh__shop
LEFT JOIN sh__shop_invoice ON sh__shop_invoice.shop_id = sh__shop.id
WHERE sh__shop_invoice.month_commission LIKE "2021-08-01"
但我看不出如何得到逆。所有在特定日期没有发票的商店。我做不到NOT LIKE "2021-08-01"。
【问题讨论】:
-
你为什么不能
NOT LIKE?因为你的 LIKE 不包含任何通配符,为什么不做一个基本的比较=? -
你为什么不能不喜欢?但是,我会改用
<>。 -
另外,将 sh__shop_invoice 从 WHERE 移动到 ON 以获得真正的 LEFT JOIN 结果。就像现在一样,您会得到常规的 INNER JOIN 结果。
-
大概你说的不是所有没有发票的商店,而是所有有发票的商店不是那个日期。为什么要使用
like来表示相等? -
不要使用
LIKE作为日期!
标签: mysql sql join where-clause inverse