2016-12-31 98 views
0

我有我没有写的代码。它包含一个特定的SQL查询。MySQL - 将表设置为默认值,如果为空前缀

对于我个人的用途,我想用左加入部分修改它到另一个表,但代码更改最少。

问题:有几个不明确的字段。

由于SQL查询非常大,并且是从原始代码中的其他函数动态获取的,所以它使我烦恼于为所有不明确的字段加前缀。

我的问题是:是否有一种方法只能从我的LEFT JOIN中添加新表,并让MySQL将没有前缀的字段视为表A?

例子:

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

凡未经前缀的所有 “ID” 出现次数都与表1。

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

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

谢谢。

回答

1

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

也就是说,如果使用USING子句,则不需要限定连接中使用的列名。事实上,你不应该限定这样的名字。所以,你可以放心地写:

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

注:对于USING条款的工作,列(S)需要两个表中具有相同的名称。无论如何,我认为这是一种最佳做法 - 外键与主键具有相同的名称(通常不会是简单的id)。

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

+0

谢谢您的回复。不幸的是,在我的情况下,这两个字段有不同的名称,所以我不能使用USING。 – Jachinair

+0

@Jachinair。 。 。在你的问题的例子中,他们有相同的名字。 –

相关问题