gpt4 book ai didi

mysql - 我需要在 WHERE 语句中查看 3 个表 3 列,看看它们是否都相等

转载 作者:行者123 更新时间:2023-11-30 00:26:20 25 4
gpt4 key购买 nike

我需要类似的东西......但它显然不起作用,不确定我是否需要使用任何 JOIN 或什么。非常感谢您的帮助!谢谢。

vicidial_closer_log.用户 = vicidial_users.用户 = vicidial_campaign_agents.用户

SELECT
vicidial_closer_log.call_date,
Count(vicidial_closer_log.`status`) AS call_count,
vicidial_closer_log.`user`,
vicidial_closer_log.user_group,
vicidial_users.`user`,
vicidial_users.full_name,
vicidial_campaign_agents.`user`,
vicidial_campaign_agents.campaign_rank
FROM
vicidial_closer_log ,
vicidial_users ,
vicidial_campaign_agents
WHERE
date_format(vicidial_closer_log.call_date, '%Y-%m-%d') BETWEEN '2014-04-02' AND '2014-04-02' AND
vicidial_closer_log.`user` NOT LIKE 'VDCL' AND
vicidial_closer_log.`status` NOT LIKE 'CS' AND
vicidial_closer_log.`status` NOT LIKE 'NANQUE' AND
vicidial_closer_log.`status` NOT LIKE 'TIMEOT' AND
vicidial_closer_log.user_group IN ('RAD_US', 'RAD_JAM') AND
vicidial_closer_log.`user` = vicidial_users.`user`
GROUP BY
vicidial_closer_log.`user`
ORDER BY
vicidial_closer_log.`user` ASC

最佳答案

您将 [vicidial_closer_log.user = vicidial_users.user] 放在 WHERE 子句上的方式并不完全错误,但您忘记链接 vicidial_campaign_agents 表。如果您添加一个 AND vicidial_users.user = vicidial_campaign_agents.userWHERE 子句末尾应该可以使用,但请尝试习惯 JOIN 子句。这是正确的做法,并使您的查询看起来更漂亮。

JOIN 子句非常简单,工作原理如下:table_a JOIN table_b ON table_a.key = table_b.key。 ON 子句指定 table_a 和 table_b 之间必须匹配的列,然后将其结果与 table_c 执行相同的操作。

像这样:

SELECT
l.call_date,
Count(l.status) AS call_count,
l.user,
l.user_group,
u.full_name,
a.campaign_rank
FROM
vicidial_closer_log l
JOIN vicidial_users u ON l.user = u.user
JOIN vicidial_campaign_agents a ON u.user = a.user
WHERE
date_format(l.call_date, '%Y-%m-%d') BETWEEN '2014-04-02' AND '2014-04-02' AND
l.user <> 'VDCL' AND
l.status NOT IN ('CS', 'NANQUE', 'TIMEOT') AND
l.user_group IN ('RAD_US', 'RAD_JAM')
GROUP BY
l.user
ORDER BY
l.user ASC
  • 我还为您的表添加了别名,以便您的查询变得更加清晰。
  • 此外,您不需要简单的引号来指定表列(例如 table_a.'column'),只需键入 table_a.column 即可。
  • 还有,您输入的部分l.status 不像“CS”并且l.status 不像“NANQUE”并且l.status 不像“TIMEOT”你可以输入l.status NOT IN ('CS', 'NANQUE', 'TIMEOT')
  • 此外,您还选择了 l.user、u.user 和 a.user。按照您描述查询的方式,这 3 列在每行上都是相同的,因此从数据库服务器下载结果集时会浪费网络流量。

希望它能起作用。

关于mysql - 我需要在 WHERE 语句中查看 3 个表 3 列,看看它们是否都相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22845612/

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