SELECT *, j.company_id as companyid, j.id as jid, p.id as pid, f.id as fave_id, f.user_id as user_id
FROM people p
LEFT JOIN job j
ON p.job_id = j.id
LEFT JOIN favourites f
ON p.id = f.people_id
WHERE p.company_id = 1
ORDER BY p.id ASC
我有上面的 MySQL 查询,它工作得很好,但最后两部分是我需要整理的。
默认情况下,在每一行中,它们输出 null
,否则它们输出整数,例如 fave_id
作为 46
和 user_id
如 6
我实际上需要弄清楚的是,如果 fave_id
和 user_id
在我的头脑中都不为空,是否可以从查询的 SELECT 部分输出像这样的东西
SELECT *, j.company_id as companyid, j.id as jid, p.id as pid, f.id as fave_id, f.user_id as user_id, [if fave_id && user_id then favorite = true]
FROM people p
LEFT JOIN job j
ON p.job_id = j.id
LEFT JOIN favourites f
ON p.id = f.people_id
WHERE p.company_id = 1
ORDER BY p.id ASC
最佳答案
一个CASE语句将用于检查值并返回所需的值:
SELECT *, j.company_id as companyid, j.id as jid, p.id as pid, f.id as fave_id, f.user_id as user_id,
(CASE WHEN fave_id IS NOT NULL AND user_id IS NOT NULL THEN 1 ELSE 0 END) AS favorite
FROM people p
LEFT JOIN job j
ON p.job_id = j.id
LEFT JOIN favourites f
ON p.id = f.people_id
WHERE p.company_id = 1
ORDER BY p.id ASC
关于MySQL SELECT 查询选择中的 where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25311815/