我有2张桌子 工作 ID,描述,名称 测试 ID,作业ID 我创建了查询:
SELECT jobs.id,jobs.name,jobs.country,jobs.description,test.id,test.jobid
FROM jobs,test
WHERE jobs.userid='10'
AND
GROUP BY jobs.id
它回应了我所有的工作,但测试ID在所有1中
如果我将其设为where jobs.id=test.jobid
,则结果已知。
如何打印test.jobid
等于job.id
的所有作业和不具有test.jobid
答案 0 :(得分:1)
你所拥有的是一个交叉连接。这不是你想要的。你想要一个左连接。
喜欢这个
SELECT jobs.id,jobs.name,jobs.country,jobs.description,test.id,test.jobid
FROM jobs
left join test on jobs.id = test.jobid
WHERE jobs.userid='10'
GROUP BY jobs.id
答案 1 :(得分:0)
听起来你正在寻找的是一个左连接命令。
SELECT jobs.id AS jobs_id,jobs.name,jobs.country,jobs.description,test.id AS test_id,test.jobid AS job_id_from_test
FROM jobs
LEFT JOIN test ON test.jobid = jobs.id
WHERE jobs.userid='10'
- 可能会有帮助。上面的代码添加了左连接命令,并取出了不必要的'AND'和'GROUP BY'语句。与常规JOIN不同,LEFT JOIN将返回jobs表的所有适用值,即使测试表中没有相应的行也是如此。