【问题标题】:Why where condition is wrong?为什么条件哪里不对?
【发布时间】:2019-03-27 13:52:58
【问题描述】:

我尝试对 2 个表使用左连接。第一个表有主键,第二个表没有主键

我使用普通的 sql 语法和简单的命令。

CREATE TABLE NAMES(pk integer PRIMARY KEY, Name text);
CREATE TABLE CITIES(fk integer, Name text);

INSERT INTO NAMES VALUES(1,'Tom');
INSERT INTO NAMES VALUES(2,'Lucy');
INSERT INTO NAMES VALUES(3,'Frank');

INSERT INTO CITIES VALUES(1,'Moscow');
INSERT INTO CITIES VALUES(3,'Saransk');
INSERT INTO CITIES VALUES(4,'Penza');
INSERT INTO CITIES VALUES(1,'Samara');

SELECT * FROM NAMES LEFT JOIN CITIES WHERE NAMES.pk = CITIES.fk

我希望看到带有 NULL 的记录。但我只看到条件匹配的记录:https://rextester.com/FXMPF52805

【问题讨论】:

  • WHERE 更改为ON
  • @HoneyBadger Tnanks!它有效

标签: mysql sql


【解决方案1】:

正确的左连接语法

SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name = table2.column_name;

所以你应该将WHERE 更改为ON

 SELECT * FROM NAMES LEFT JOIN CITIES ON NAMES.pk = CITIES.fk

【讨论】:

    【解决方案2】:

    当您选择右连接为“左连接、右连接等”时。

    你应该写如下查询

    SELECT * FROM NAMES LEFT JOIN CITIES on NAMES.pk = CITIES.fk

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-25
      • 2021-12-05
      • 1970-01-01
      • 1970-01-01
      • 2013-11-01
      相关资源
      最近更新 更多