gpt4 book ai didi

mysql查询返回错误结果

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

我有三个表,即 A、B 和 C。

表 A 的架构和值:

UID CITY      NAME
0 Bangalore UserA
1 Hyderabad UserB

表 B 的架构和值:

UID JID DETAILS 
0 1 Some Text
0 2 Some Text
1 3 Some Text

表 C 的架构和值:

UID JID Applied
0 3 Yes
1 1 Yes

现在,我需要获取 UID=0 的所有三个表的详细信息,并从第三个表 C 中检索 JID。

我已经写了一个下面的 mysql 查询来这样做:

select
a.uid,
a.city,
a.name,
b.jid,
b.details
from
tableB b
INNER JOIN tableA a on b.uid=a.uid
where
jid in(
select c.jid
from tableC,tableB
where tableC.uid=0 and tableC.jid=tableB.jid
);

这给了我以下输出:

UID CITY       NAME  DETAILS APPLIED
0 BANGALORE UserA sometext yes

但是现在如果我想要第三个表 C 中不存在的记录,在本例中为 JID 2 和 3,我无法从以下查询中获得正确的结果。

select
a.uid,
a.city,
a.name,
b.jid,
b.details
from
tableB b
INNER JOIN tableA a on b.uid=a.uid
where jid in(
select c.jid
from tableC,tableB
where tableC.uid=0 and tableC.jid!=tableB.jid
);

基本上我在这里想要实现的是以下场景。TableA=用户protfolio.TableB=用户发布的工作。TableC=用户申请了哪些工作(通过JID(JobIDs)识别)。现在单个用户可以申请许多工作。每当用户申请工作时,都会在第三个 TABLEC 中输入一个条目,记录哪个用户申请了哪个工作。现在,我有已申请工作的数据,我需要查询未申请的工作。

能否请您指导我到底哪里出错了。

最佳答案

第一个查询不应该是...

SELECT a.uid
, a.city
, a.name
, b.jid
, b.details
FROM tableB b
JOIN tableA a
ON b.uid = a.uid
JOIN tableC c
ON c.jid = b.jid
WHERE tableC.uid = 0;

等等排除c...

SELECT a.uid
, a.city
, a.name
, b.jid
, b.details
FROM tableB b
JOIN tableA a
ON b.uid = a.uid
LEFT
JOIN tableC c
ON c.jid = b.jid
AND tableC.uid = 0
WHERE c.jid IS NULL;

关于mysql查询返回错误结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19637723/

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