Sql 2表Q?

时间:2016-09-23 17:46:37

标签: php mysql sql mysqli

我有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

的作业

2 个答案:

答案 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表的所有适用值,即使测试表中没有相应的行也是如此。