2010-10-11 104 views
2
SELECT `accounts`.`password` FROM accounts WHERE `accounts`.`user`='some_user' 

SELECT password FROM accounts WHERE user='some_user' 

我对这两者有点困惑。就结果而言,我知道两者之间没有什么不同。然而,有没有理由做一种方式而不是另一种?我学会了第二种方式,但有些人告诉我第一种方式是“官方”做到这一点。SQL查询格式化

回答

2

你需要使用table.field格式,如果您正在执行JOIN,需要用它来消除歧义,在不同的表中相同名称的两个字段。例如:

SELECT table1.name 
    FROM table1 
LEFT JOIN table1 ON table1.id = table2.id 
    WHERE table2.name='smith' 

至于使用重音符(`)的话,你会需要它,如果你的表或字段保留SQL关键字,如selectwhereand

+0

+1 - 提及保留关键字的好方法。 – LittleBobbyTables 2010-10-11 21:23:28

0

唯一不同的是您要将表名添加到查询中。我个人喜欢为了以后的改变而做这件事。如果您以后要加入另一个表中也有一个密码字段,则第二个语句将具有不明确的列名。

0

只要你明白,当你必须限定与表名称的列(当多个表参与),当你必须使用的标识符引用(当你的标识符是保留字的SQL引擎处理你的查询),那么我相信阅读使用你的版本比完全合格和引用的版本更安全和更容易。