Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 字段不等于值的表上的联接_Mysql_Join_Left Join - Fatal编程技术网

Mysql 字段不等于值的表上的联接

Mysql 字段不等于值的表上的联接,mysql,join,left-join,Mysql,Join,Left Join,我有一个疑问: SELECT `A`.*, `LNK`.`act_id`, `LNK`.`remaining`, `U`.`username` as U_username FROM (`anagrafiche` as A) LEFT JOIN `lnk_ana-act` AS LNK ON `A`.`id` = `LNK`.`ana_id` LEFT JOIN `users` AS U ON `A`.`uid` = `U`.`id` WHERE (`LNK`.`act_id` != 57 OR

我有一个疑问:

SELECT `A`.*, `LNK`.`act_id`, `LNK`.`remaining`, `U`.`username` as U_username
FROM (`anagrafiche` as A)
LEFT JOIN `lnk_ana-act` AS LNK ON `A`.`id` = `LNK`.`ana_id`
LEFT JOIN `users` AS U ON `A`.`uid` = `U`.`id`
WHERE (`LNK`.`act_id` != 57 OR `LNK`.`act_id` IS NULL) AND A.closed = '0'
LIMIT 10
此查询选择act_id不是57的所有字段,导致第一个表“anagrafiche”出现多个重复项。这样做显然是错误的,在这种情况下我该怎么办

谢谢

编辑澄清


不管有多少lnk_ana-act记录,我只想要第一个表的一条记录。更准确地说,lnk_ana-act表中有数千条记录不等于
act_id
!=57,但我只需要“anagrafiche”表的一条唯一记录,而不管联接表中有多少条记录

,如果我了解您需要什么。试试这个:

SELECT A.*, LNK.act_id, LNK.remaining, U.username as U_username
FROM anagrafiche A LEFT JOIN lnk_ana-act LNK 
    ON A.id = LNK.ana_id
LEFT JOIN users U 
    ON A.uid = U.id
WHERE LNK.act_id <> 57 AND A.closed = '0'
GROUP BY A.id
LIMIT 10
选择一个*,LNK.act\U id,LNK.remaining,U.username作为U\U用户名
从anagrafiche A LEFT加入lnk_ana-act lnk
在A.id=LNK.ana\u id上
左加入用户U
在A.uid=U.id上
其中LNK.act_id 57和A.closed='0'
按A.id分组
限制10

您的预期结果是什么?您希望获取哪些记录?这是使用左联接的要求吗?我的意思是,即使在第二个表中找不到匹配的行,你也需要第一个表中的行吗?@Marco无论有多少lnk_ana-act记录,我只需要第一个表中的一条记录。@Zohaib是的,我需要左连接,因为你写的原因。@0plus1有点混乱,你只需要第一个表中的一条唯一记录,你也在使用左连接。第一个表中是否有重复记录?