mysql - SQL 左连接没有得到预期的结果

标签 mysql left-join

我有两个表,如下:

表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

我有user_id = 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

我应该做什么?

最佳答案

此查询正确连接了 2 个表:

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 语法,这应该是首选:

  • 旧语法 = FROM a, b WHERE a.x = b.x...
  • 新 ANSI = ... 加入 a.x = b.x...

您可以通过添加 WHERE 子句来限制输出,例如 WHERE tableA.user_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

关于mysql - SQL 左连接没有得到预期的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33996817/

相关文章:

PHP:如何解析 MySQL "LEFT JOIN"?

php - $this->db->query() 什么都不返回 CodeIgniter

php - 如何使用 PHP 在 MySQL 表中插入订单 ID 列和 ID 列?

mysql - RIGHT JOIN 返回所有 NULL 结果

python - Pandas 中的 Iterrows 合并会导致带有后缀的重复列

powershell - 仅比较对象左侧或右侧

MySQL 使用 LEFT JOIN 从 2 个表(非关系表)中获取行

mysql - 三个表连接和计数显示错误结果

mysql - 将 MySQL 表重新格式化为网格

mysql - 从不同表中减去时间戳