gpt4 book ai didi

php - 嵌套查询无法正确获取数据

转载 作者:行者123 更新时间:2023-11-29 02:26:51 26 4
gpt4 key购买 nike

问题

我有两个不同的表,表名是team_requestteams[team_request] 拥有每个提交的团队的唯一记录,并且 [teams] 保存具有唯一用户名但与 [team_request] 相同的团队数据的重复记录对于接受加入该团队的用户。

以下查询的预期结果:

我正在运行以下查询来获取待处理的挑战或团队请求,其基本逻辑是从 [team_request] 中获取所有团队,而该团队在 中不存在[teams] 表或未被该用户忽略。

实际上查询在做什么:

它正在从属于该用户的表 [team_request] 中获取所有行(团队),无论用户是否已排除或忽略。

还忘了在上面提到 fbC_status[team_request] 中的一个字段,如果用户忽略成为团队的一员,它会保存用户的电子邮件地址。

任何帮助或指导将不胜感激,我只是坚持使用它。

MySQL 查询

SELECT *
FROM team_request
WHERE (c_emails LIKE '%joe@example.com%')
OR (c_emails LIKE '%9876543210%')
AND fbC_status NOT LIKE '%joe@example.com%'
AND fbC_status NOT LIKE '%9876543210%'
AND '%joe@example.com%' NOT IN
(SELECT username
FROM teams)
AND t_name NOT IN
(SELECT T.t_name
FROM team_request TR,
teams T
WHERE TR.t_name = T.t_name
AND T.username = '%joe@example.com%'
AND (TR.fbC_status NOT LIKE '%joe@example.com%'
AND TR.fbC_status NOT LIKE '%9876543210%'))
LIMIT 0, 30

最佳答案

我建议您重新考虑您的数据库的结构,您的 teams 表看起来几乎是 team_requests 的副本,但考虑到当前的结构,请尝试以下内容:

@phone would be your '9876543210'
@username would be your 'joe@example.com'

SELECT r.*
FROM team_request r
WHERE (r.c_emails = @username OR r.c_emails = @phone)
AND r.fbC_status <> r.c_emails
AND r.t_name NOT IN ( SELECT t.name
FROM teams t
WHERE /* t.username = r.c_emails otherwise: */
t.username = @username /* OR t.phone = @phone*/

)

它相当不清楚您所有的字段用于什么,因此如果不进行更改这不太可能工作。注释掉的部分是我认为您应该使用的部分,但我无法知道它们是否适用于您的表格。

您可以随意使用 LIKE '%...%' 但是请记住,如果用户有电子邮件 at@email.com,当用户电子邮件 acrobat@email.com 也存在 LIKE '%at@email.com%' 将匹配它们。

关于php - 嵌套查询无法正确获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20143377/

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