gpt4 book ai didi

Mysql 多个ANDS

转载 作者:太空宇宙 更新时间:2023-11-03 11:12:46 25 4
gpt4 key购买 nike

我有三个表personsjobsjobs_persons

一个人可以有多个工作。

人 1 是技术支持和经理

第 2 个人是技术支持

人 3 是经理

职位 1 技术支持

职位 2 经理

我需要找到一个查询给我目前是技术支持和经理的人的结果

答案只有第 1 个人

SELECT persons.*
FROM persons INNER JOIN jobs_persons ON persons.id = jobs_persons.person_id
INNER JOIN jobs ON jobs.id = jobs_persons.job_id
WHERE job.id IN (1,2)

返回 3 行

SELECT persons.*
FROM persons INNER JOIN jobs_persons ON persons.id = jobs_persons.person_id
INNER JOIN jobs ON jobs.id = jobs_persons.job_id
WHERE job.id = 1 AND job.id = 2

返回 0 行。

我目前正在研究 Ruby on Rails。有人可以帮忙吗?

最佳答案

您想使用 OR 运算符。使用 job.id = 1 AND job.id = 2 将只返回 id 等于 1 且同时等于 2 的元素。没有元素可以做到这一点。您需要 id 为 1 或 id 为 2 的元素。

为了让它更明显:

SELECT * FROM table WHERE lastname = 'Smith' AND firstname = 'James';

当执行此操作时,您显然不希望所有名为 Smith 或 James 的人。 ;-)

编辑:

误读了问题。您需要的是第二次加入以两次加入作业表并将它们与不同的作业一起加入。这有点困难,因为您没有显示架构,但这可能有效:

SELECT persons.*
FROM persons
INNER JOIN jobs_persons jp1 ON persons.id = jp1.person_id
INNER JOIN jobs_persons jp2 ON persons.id = jp2.person_id
INNER JOIN jobs j1 ON j1.id = jp1.job_id
INNER JOIN jobs j2 ON j2.id = jp2.job_id
WHERE j1.id = 1 AND j2.id = 2

关于Mysql 多个ANDS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7456279/

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