Mysql SQL左联接未使用表2中的值填充列

Mysql SQL左联接未使用表2中的值填充列,mysql,sql,join,select,phpmyadmin,Mysql,Sql,Join,Select,Phpmyadmin,用这个我想得到 SELECT zmogaus_id, hobio_id, hobio_pav2 FROM zmogaus_hobiai LEFT JOIN hobiai ON zmogaus_hobiai.hobio_pav2=hobiai.hobio_pav WHERE zmogaus_id=3 但是hobio_pav2仍然是一个空列。我尝试不使用hobio_pav2列,但问题仍然存在,没有将hobio_pav值添加到hobio_id对应的id中。 hobio_pav2列为空 编辑: 样

用这个我想得到

SELECT zmogaus_id, hobio_id, hobio_pav2
FROM zmogaus_hobiai 
LEFT JOIN hobiai 
ON zmogaus_hobiai.hobio_pav2=hobiai.hobio_pav
WHERE zmogaus_id=3
但是hobio_pav2仍然是一个空列。我尝试不使用hobio_pav2列,但问题仍然存在,没有将hobio_pav值添加到hobio_id对应的id中。 hobio_pav2列为空

编辑:

样本数据:

zomgaus_id =3 . hobio_id =1 . hobio_pav2 =name1 (from hobio_pav)
zomgaus_id =3 . hobio_id =2 . hobio_pav2 =name2 (from hobio_pav)
预期结果:

table hobiai: id = 1, hobio_pav = name1;id = 2, hobio_pav = name2;id = 3, hobio_pav = name3;

    table zmogaus_hobiai: 
id =1, zmogaus_id=2, hobio_id=2, hobio_pav2 = null;
id =2, zmogaus_id=2, hobio_id=3, hobio_pav2 = null;
id =4, zmogaus_id=3, hobio_id=1, hobio_pav2 = null;
id =5, zmogaus_id=3, hobio_id=3, hobio_pav2 = null;
得到结果:

generated table: 
zmogaus_id=3, hobio_id=1, hobio_pav2=name1;
zmogaus_id=3, hobio_id=3, hobio_pav2=name3;

您正在寻找
coalesce()

如果你想更新

zmogaus_hobiai

SELECT zh.zmogaus_id, coalesce(h.hobio_id, zh.hobio_pav2)
FROM zmogaus_hobiai zh LEFT JOIN
     hobiai h
     ON zh.hobio_pav2 = h.hobio_pav
WHERE zh.zmogaus_id = 3;
您的选择将如下所示

UPDATE zmogaus_hobiai zh INNER JOIN hobiai h
    ON zh.hobio_id=h.id
    SET zh.hobio_pav2 = h.hobio_pav
    WHERE zmogaus_id=3;

从示例数据来看,您似乎只需要修复连接条件-您应该在
id
s上连接,而不是在其他字符串列上:

SELECT zmogaus_id, h.hobio_id, hobio_pav
FROM zmogaus_hobiai  zh
INNER JOIN hobiai h
ON zh.hobio_id=h.id
WHERE zmogaus_id=3:

请注意,我添加了表别名,并用它们所属的表作为所有列的前缀。这使得查询更易于阅读,并避免了不同表具有同名列时的歧义。

请提供示例数据和所需结果。我不想更新表,我只想筛选那些具有相同zmogaus_id的hobio_id,然后使用该hobio_id和hobio_pav在php中执行一些操作,我想如果我只使用左连接会更容易,但现在我想我应该不仅仅给zmogaus_hobiai hobio_id,还应该给hobio_pav hobio_id。对不起,我说的太多了,你给了我一个比我要找的hahano更简单的解决方案。在你的情况下,最好使用内部连接,你会发现我的选择查询会给你正确的结果。
SELECT zmogaus_id, h.hobio_id, hobio_pav
FROM zmogaus_hobiai  zh
INNER JOIN hobiai h
ON zh.hobio_id=h.id
WHERE zmogaus_id=3:
SELECT z.zmogaus_id, z.hobio_id, h.hobio_pav2
FROM zmogaus_hobiai z
LEFT JOIN hobiai h ON h.id = z.zmogaus_id
WHERE z.zmogaus_id = 3