为什么条件不对?

时间:2019-03-27 13:52:58

标签: mysql sql

我尝试对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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

当您选择以“左联接,右联接等”进行右联接时。

您应按以下方式编写查询

  

选择*从NAMES.pk = CITIES.fk上的名称左加入城市