MySQL - 如果为空前缀,则将表设置为默认值

时间:2016-12-31 15:37:23

标签: mysql sql database select left-join

我有一个我没写过的代码。它包含一个特定的SQL查询。

对于我个人使用,我想通过LEFT JOIN到另一个表来部分改变它,但代码更改最少。

问题:有几个不明确的领域。

由于SQL查询非常大并且是从原始代码中的其他函数动态生成的,因此我很难为所有不明确的字段添加前缀。

我的问题是:有没有办法只从我的LEFT JOIN前缀新表,并让MySQL考虑没有前缀的字段作为表A?

示例:

SELECT id, table2.fieldB FROM table1 LEFT JOIN table2 ON table2.id = id WHERE id > 10;

所有没有前缀的“id”出现都链接到table1。

如果没有,我的其他解决方案是什么?

基本上,我不想触及大的条件,因为它是动态的,来自代码中的其他功能,我不想在任何地方改变它。

谢谢。

1 个答案:

答案 0 :(得分:1)

您应该限定所有列名称。这只是一种很好的做法,它使代码更容易理解和维护。

也就是说,如果使用USING子句,则不需要限定联接中使用的列名。事实上,你不应该限定这些名称。所以,你可以安全地写:

SELECT id, t2.fieldB
FROM table1 t1 LEFT JOIN
     table2 t2
     USING (id)
WHERE id > 10;

注意:要使USING子句起作用,列中的两个表必须具有相同的名称。我认为这是最好的做法 - 外键与主键名称相同(通常不是简单的id)。

此外,您可以使用表别名来减少限定列名称时的键入量。

相关问题