【问题标题】:conditional update/inserting rows有条件的更新/插入行
【发布时间】:2020-07-26 02:43:08
【问题描述】:

我需要帮助使用来自满足特定条件的其他表的数据填充表 (job_desired)。

我想在 job_desired 中插入的是 (contact_id,title,salary_low)

[contact_id](外键是指 my_contacts)- 来自名为contact_seeking 的联结表,其中他们的 seek_id IN(4,7) 即。就业或新工作(contact_id)是contact_seeking中的一个fk

[title] - 来自一个名为 job_listings 的表,它满足以下条件

[salary_low] - 也来自 job_listings WHERE Salary_low > 来自表 job_current(has fk contact_id) 的薪水,如果有帮助的话

我尝试了各种选择语句和一个案例更新,但无济于事。 请帮助一个菜鸟!

【问题讨论】:

  • 我知道contact_seeking是一个链接表。它有contact_id和其他哪些字段?我知道您有三个表:job_listings 与 title 和salary_low,my_contacts 与contact_id 和contact_seeking 与contact_id 以及其他什么?
  • contact_seeking 只有 seek_id 和 contact_id。 seek_id 是指表搜索。 job_listings 没有薪水,只有薪水。 job_listings 没有链接到任何其他表,只是 job_current 和 job_desired 具有 my_contacts 中主要的 contact_id 的敌人键。这有帮助吗?感谢您的回复
  • 您希望在业务成果方面实现什么?暂时忘记 MySQL。个人(“my_contact”)说特定工作是“job_desired”的标准是什么?那么:包含这些条件的字段是什么?在哪些表中可以找到它们?
  • 好的,那么工资是唯一的标准。同样,您在哪些表格中保存薪水?目前还不清楚。你为什么不发布你的数据模型?这样会容易很多。
  • 他们当前的薪水在表“job_current”的“薪水”列中,我要检查的薪水是 job_listings 中的“薪水”列。此信息必须进入表 job_desired。这有帮助吗?非常感谢您的回复。我有表格的示意图,但它不会让我上传哦,还有第二个标准 - 他们必须在寻找工作,所以从 contact_seeking IN(4,7) 中寻找_id 寻找“就业”和“新工作”

标签: join sql-update mysql-workbench sql-insert


【解决方案1】:
INSERT INTO job_desired(contact_id, title, salary_low)
SELECT 
   a.id, c.title, b.salary
FROM 
   my_contacts a 
INNER JOIN job_current b ON a.id = b.contact_id
INNER JOIN job_listings c ON b.salary < c.salary
INNER JOIN contact_seeking d ON a.id = d.contact_id;

假设“my_contacts”的id字段被称为“id”。

这个查询应该有望回答这个问题:“job_desired”是“job_listings”中支付更高“薪水”的任何工作,然后是相应“my_contact”的“job_current”中的“薪水”。

请试一试。我没有测试这个!如果它不起作用,请告诉我。 “salary_low”包含现有的“薪水”。 编辑:为了确定这个人是否真的在找工作,我刚刚向 contact_seeking 添加了一个内部连接,它似乎保存了这些信息?!

【讨论】:

  • 天哪,它成功了!太感谢了!这已经困扰我两天了!
【解决方案2】:

所以我对 id 7 的问题是没有 job_current 值可以与 job_listings 进行比较。 所以我用下面的代码来解决这个问题。

INSERT INTO job_desired(contact_id、title、salary_low)

从job_listings jl中选择cs.contact_id、jl.title、jl.salary

加入contact_seeking cs WHERE cs.seeking_id =7

按工资排序

限制 1;

【讨论】:

  • 您能告诉我您希望在业务成果方面达到什么目标吗?和以前一样......也许你可以修改以下内容:“这个查询应该有望回答这个问题:“job_desired”是来自“job_listings”的任何工作,支付更高的“薪水”,然后是来自“job_current”的“薪水”各自的“my_contact”。“
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-02
  • 2012-02-12
  • 1970-01-01
  • 1970-01-01
  • 2016-08-16
  • 1970-01-01
  • 2021-11-28
相关资源
最近更新 更多