我有 2 个表: 地址和我已发送的文件日志(名为发送)。
对于给定的文件,我想获取所有地址,以及他们是否收到该文件。
到目前为止我得到的是:
SELECT *
, CASE
WHEN send.fileid = 1 THEN 1
ELSE send.fileid = NULL
END as file1
FROM send
RIGHT OUTER JOIN `adress`
ON `send`.adressid = `adress`.`id`
问题是,当一个地址有两个不同的文件时,它们会被列出两次。我怎样才能改变声明来解决这个问题?
示例数据
*adress*
1 Adrian
2 Christian
3 Max
4 Alex
*file*
1 music
2 video
3 document
*send*
adress:1 file:1
adress:1 file:2 -
adress:3 file:1
adress:4 file:2 -
adress:4 file:3
when i browse the file 2, i want to see:
X Adrian
X Alex
Christian
Max
TLDR:我想要我所有的地址(一次)具有特定文件 ID 或 null。
提前致谢。
最佳答案
一种方法是将条件放在子查询中,让外部连接完成所有繁重的工作:
SELECT a.*, s.fieldid
FROM address a
LEFT JOIN (SELECT filedid, addressid
FROM send
WHERE fileid = 1) ON s.addressid = a.id
关于mysql - 加入时从原始表中删除重复条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36796082/