MySQL无主键左关联查询时无法返回正确结果吗?

新手上路,请多包涵

现在MySQL有t1表:

task_id value
task1
task2 2002
task3 2002
task4 2002

t2表:

task_id value
task1 2001
task1 2002
task2 2002
task3 2002
task4 2002

两张表都没有设置primary key,字段类型均为varchar。现执行:

SELECT t1.task_id,
       t1.value,
       t2.value 
  FROM t1 LEFT JOIN t2 ON t1.task_id = t2.task_id;

会返回结果:

task_id value value(1)
task1 null 2001
task1 null 2002
task2 2002 2002
task3 2002 null

即使把t1、t2表的task4所在行均删掉,再执行上述语句也会返回同样的结果。这是为什么呢?

阅读 1.9k
3 个回答

结果哪里有问题

建议你检查下 t1或则t2表里的 task_id 是不是哪一边的 t4后面多了空格. 用你的表,和你的 sql 查询出来是5行数据,task4是在结果里的.不要怀疑一个成熟的产品在这种基本的问题上会犯错误

微信截图_20200604112801.png

你看这个数据,我造了你的数据去执行,结果怎么和你的不一样呢,没问题啊,估计是你本地数据的问题了,你查一下你本地的数据,SQL语法是没问题的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题