我有下列表格:
工人(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值大于idid表的t1值,则获取在同一项目中工作的工人的worker。这样,就排除了重复对。
Demo here

关于mysql - MySQL-获取具有相同外部属性的条目的元组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37347444/

10-15 21:01