gpt4 book ai didi

mysql - 奇怪连接表上的 where 条件是否仍然按预期工作?

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

在我的last question ,我询问如何加入一个计划,以便我始终能够获得特定客户的最新计划。 ypercube 给出了 answer这似乎工作得很好,但现在我担心当我向整个查询添加更多 where 条件时,它不会按预期工作。

例如,如果我在查询底部添加额外条件:

SELECT  c.*, p.*
FROM clients AS c
JOIN programs AS p
ON p.id =
(
SELECT pi.id
FROM programs AS pi
WHERE pi.client_id = c.id
ORDER BY
pi.close_date=0 DESC, pi.close_date DESC
LIMIT 1
)
WHERE p.somefield='somevalue'

假设客户端有 2 个事件程序,其中 1 个的 p.somefield='somevalue' 为 true,另一个为 false,但是,错误的程序是选择加入(它有一个更近的关闭日期)...那么这个客户将根本不会被选择,还是只会为他选择另一个(最近关闭的)计划?

最佳答案

您只需将 p.somefield 检查添加到子查询中即可避免这种情况。

SELECT  c.*, p.*
FROM clients AS c
JOIN programs AS p
ON p.id =
(
SELECT pi.id
FROM programs AS pi
WHERE pi.client_id = c.id
AND pi.somefield='somevalue'
ORDER BY
pi.close_date=0 DESC, pi.close_date DESC
LIMIT 1
)

由于您想对从程序中找到的记录进行限制,因此尽快实现该限制才有意义。不仅是为了避免您在问题中概述的问题,也是出于性能原因。

关于mysql - 奇怪连接表上的 where 条件是否仍然按预期工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7260776/

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