我有下列表格:
工人(id,fname,lname生日)
工作(工作id,任务id)。
现在,我想让所有的工人在同一个任务上工作。
我的想法是加入works_on
的工人,然后再次加入worker
。基本上这是可行的,但我有重复的,比如:
John Smith, Walther White
Walther White, John Smith
希望你能帮助我。
约翰
最佳答案
您可以使用以下查询:
SELECT t1.fname, t1.lname, t4.fname, t4.lname, t2.task_id
FROM worker AS t1
JOIN works_on AS t2 ON t1.id = t2.worker_id
JOIN works_on AS t3 ON t2.task_id = t3.task_id AND t2.worker_id < t3.worker_id
JOIN worker AS t4 ON t3.worker_id = t4.id
这里的技巧是第二个
ON
操作的JOIN
子句中的这个谓词:t2.worker_id < t3.worker_id
如果
id
值大于id
id
表的t1
值,则获取在同一项目中工作的工人的worker
。这样,就排除了重复对。Demo here
关于mysql - MySQL-获取具有相同外部属性的条目的元组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37347444/