gpt4 book ai didi

mysql - 为什么 Inner-join 显示带有 where 子句的错误数据?

转载 作者:行者123 更新时间:2023-11-29 05:54:09 25 4
gpt4 key购买 nike

在内部连接中使用 where 子句但内部连接没有选择我在查询中要求的内容。这里我只选择 12-jun 数据,而 innerjoin 查询也选择以前的日期数据。

My Table

查询是:

SELECT
p_sale_inv.datetime,
p_sale_inv.sale_inv,
p_sale_inv.Jobber,
p_sale_part.stock_id,
p_sale_part.quantity,
p_sale_part.netamount,
p_purch_stock.Price,
p_sale_part.sale_inv
FROM
p_sale_inv
INNER JOIN p_sale_part ON p_sale_inv.sale_inv = p_sale_part.sale_inv
INNER JOIN p_purch_stock ON p_sale_part.stock_id = p_purch_stock.stock_id
WHERE
DATE_FORMAT(p_sale_inv.datetime, '%Y-%m-%d') BETWEEN '2018-07-12' AND '2018-07-12'

AND RESULT IS:

问题是:为什么查询显示相同的日期?实际上,如上表所示,它们是不同的。

最佳答案

查询返回 p_sale_inv 表的第二行,连接到 p_sale_part 表的两行。这就是日期相同的原因:它们来自表格的同一行。

(请注意,只有一个 p_sale_inv 行具有与 WHERE 子句匹配的日期。因此您不会期望返回该表的两行。)

编辑:也许这将有助于消除误解。这是删除了 INNER JOIN 的相同查询:

SELECT
p_sale_inv.datetime,
p_sale_inv.sale_inv,
p_sale_inv.Jobber,
FROM
p_sale_inv
WHERE
DATE_FORMAT(p_sale_inv.datetime, '%Y-%m-%d') BETWEEN '2018-07-12' AND '2018-07-12'

您只会看到表格中的一行,即日期为 7-12 的那一行。如果删除“WHERE”子句,您将看到两行和两个日期。使您感到困惑的是与其他表的连接。我认为您的下一步是了解表连接的工作原理。

关于mysql - 为什么 Inner-join 显示带有 where 子句的错误数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51306738/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com