Mysql SQL左联接未按预期获得结果

Mysql SQL左联接未按预期获得结果,mysql,left-join,Mysql,Left Join,我有两个表格如下: pat_id name user_id pat-main_name 1 sam 1 MR0001 2 jose 1 SELECT tableA.pat_id,tableA.name,tableA.user_id,tableB.pat-main_name FROM tableA LEFT OUTER JOIN tableB where tableA.pat_id = tableB.pat_id AND tableA.use

我有两个表格如下:

pat_id   name   user_id pat-main_name

1     sam       1    MR0001
2     jose      1
SELECT tableA.pat_id,tableA.name,tableA.user_id,tableB.pat-main_name
FROM tableA
LEFT OUTER JOIN tableB
where tableA.pat_id = tableB.pat_id AND tableA.user_id;
表a

pat_id   name   user_id

1     sam       1
2     jose      1
3     sandra    2
表B

    id      pat_id  pat-main_name

    1           1    MR0001
    2           3    MR0005  
我期望结果如下:

pat_id   name   user_id pat-main_name

1     sam       1    MR0001
2     jose      1
SELECT tableA.pat_id,tableA.name,tableA.user_id,tableB.pat-main_name
FROM tableA
LEFT OUTER JOIN tableB
where tableA.pat_id = tableB.pat_id AND tableA.user_id;
我有
user\u id=1

我所做的如下:

pat_id   name   user_id pat-main_name

1     sam       1    MR0001
2     jose      1
SELECT tableA.pat_id,tableA.name,tableA.user_id,tableB.pat-main_name
FROM tableA
LEFT OUTER JOIN tableB
where tableA.pat_id = tableB.pat_id AND tableA.user_id;
我得到的结果是:

pat_id   name   user_id pat-main_name

1     sam       1    MR0001
2     jose      1
3     Sandra    2

我该怎么办?

使用
左连接

SELECT tableA.pat_id,tableA.name,tableA.user_id,tableB.pat-main_name
FROM tableB left join tableA
ON tableB.pat_id = tableA.pat_id
WHERE tableA.user_id=1
这将有助于:

SELECT 
 tableA.pat_id, tableA.name, tableA.user_id,
 tableB.`pat-main_name`
FROM tableA LEFT OUTER JOIN tableB ON tablea.pat_id = tableb.pat_id
Where tablea.user_id = 1

此查询正确地联接了两个表:

SELECT tableA.pat_id
    ,tableA.name
    ,tableA.user_id
    ,tableB.`pat-main_name`
FROM tableA
LEFT OUTER JOIN tableB
    ON tableA.pat_id = tableB.pat_id;
您最初的查询混合了旧语法和较新的ANSI语法,这应该是首选:

  • 旧语法=来自a,b,其中a.x=b.x
  • 新的ANSI=。。。在a.x=b.x上连接
您可以通过添加WHERE子句来限制输出,例如
WHERE tableA.user\u id=1

它将给出以下输出:

1     sam       1    MR0001
2     jose      1
3     Sandra    2    NULL
或者使用WHERE子句
tableA.user_id=1

1     sam       1    MR0001
2     jose      1

您可以按如下方式编写查询:

 SELECT `t`.`name`, 
   `t1`.`pat_id`, 
   `t1`.`pat-main_name` 
    FROM tableA AS t LEFT JOIN tableB AS t1 ON `t`.`pat_id` = `t1`.`pat_id`

这是什么<代码>其中tableA.pat_id=tableB.pat_id和tableA.user_id好友它将返回我需要的所有详细信息,结果仅与用户id 1相关。请检查我的预期结果!!从tableB中选择tableA.pat\u id、tableA.name、tableA.user\u id、tableB.pat-main\u name在tableB.pat\u id=tableA.pat\u id中加入tableA.user\u id=1@Rahautos,更改为左联接,这样就可以了it@Rahautos如果我使用join,那么我不会得到该表B中的第二列。pat-main_名称为空。我的成绩也需要这个。希望你能理解!!从tableB左侧选择tableA.pat_id、tableA.name、tableA.user_id、tableB.pat-main_name加入tableB.pat_id=tableA.pat_id,其中tableA.user_id=1@SanthucoolI不想要最后一条记录。我的意思是user_id=1。我不想要最后一列。否则,您的查询是正确的