gpt4 book ai didi

MYSQL语法连接不等于

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

mysql 查询让我很烦恼。我有一些 javascript,允许用户通过在两个存储桶(框)之间来回移动人员来将人员分配到一个类别。第一个存储桶应该是除第二个存储桶(分配给类别)中的人员之外的所有人。第二个桶由某个类别中的人员组成。因此,我需要对第一个存储桶进行 mysql 查询,该存储桶提取除第二个查询中提取的人员(分配给类别)之外的所有人员。

我有一张表,其中包含所有人员,第二个表则包含分配给类别的人员。 (这里还忽略了第三个类别表。)以下代码返回第二个存储桶(该类别中的那些)的选定组,但对于第一个存储桶,当我希望它包含人员时,仅提取已分配给某个类别的组他们甚至没有出现在猫人表中。

我认为问题与 NULL 或我的连接有关,但无法弄清楚。如有任何建议,将不胜感激:

id | name

猫人

id | catid | peopleid

第一个查询应该提取除第二个查询中的人员之外的所有人员,但它只提取出现在 catpeople 表中的人员。

$sql1 = "SELECT * FROM `people` c
LEFT JOIN `catpeople` c
on p.id = c.peopleid
WHERE catid <> '2'";

第二个查询工作正常(将人员拉入类别)

$sql2 = "SELECT * FROM `people` p
LEFT JOIN `catpeople` c
on p.id = c.peopleid
WHERE catid = '2'";

最佳答案

WHERE 中添加 catpeople.catid='2' 会使您的 JOIN 更加内在。如果您需要所有人将条件移至ON:

$sql1 = "SELECT * FROM `people` p
LEFT JOIN `catpeople` c
ON (p.id = c.peopleid AND catid <> '2')";

如果我理解你的问题正确,你需要稍微修改一下这个查询:

$sql1 = "SELECT p.* FROM `people` p
LEFT JOIN `catpeople` c
ON (p.id = c.peopleid AND catid <> '2')"
WHERE c.id IS NULL ; -- I guess c.id is a primary key in catpeople.
--now it returns rows in people table that have no rows
--associated with them in catpeople (or rows with catid =2 or catid is null)

关于MYSQL语法连接不等于,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12759600/

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