Sql 2 表 Q? [复制]

Posted

技术标签:

【中文标题】Sql 2 表 Q? [复制]【英文标题】:Sql 2 Tables Q? [duplicate] 【发布时间】:2017-02-01 15:55:57 【问题描述】:

我有 2 张桌子 工作 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 的作业

【问题讨论】:

你正在做一个笛卡尔连接:你对你的 ttwo 表应该如何连接没有任何限制,所以 mysqljobs 中的每条记录与test 中的每条记录连接起来。这意味着您将获得n x m 结果。 【参考方案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

【讨论】:

您最好在 GROUP BY 语句中添加更多内容... @kbball -- 这是 mysql -- 它让你变得懒惰。 感谢只编辑jobs.id=test.jobid【参考方案2】:

听起来您正在寻找的是左连接命令。

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 将返回作业表的所有适用值,即使测试表中没有相应的行。

【讨论】:

以上是关于Sql 2 表 Q? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

SQL语句如何把一个表的数据复制到另一个表里面

Oracle SQL快速复制表结构或数据

Oracle SQL快速复制表结构或数据

mysql通过sql来复制表结构

SQL之复制表

SQL:如何使用逗号值连接另一个表? [复制]