这是关于sql语句的基本问题。
之间有什么区别
SELECT * FROM "Users"
和
SELECT "Users".* FROM "Users"
答案 0 :(得分:7)
[TableName]。[column]通常用于在连接或复杂语句中存在两个表a并且您想要定义两个具有相同名称的列时使用的表。
最常见的用途是在连接中,对于上面的基本语句,没有区别,输出也是相同的。
答案 1 :(得分:2)
不同之处在于其中一个包含两次表名。
答案 2 :(得分:2)
在你的情况下,没有区别。当您从多个表中进行选择时,它就会出现。 *从所有表中获取数据,TABLE_NAME。* - 来自此表的所有数据。假设,我们有一个包含2个表的数据库:
mysql> SELECT * FROM report;
+----+------------+
| id | date |
+----+------------+
| 1 | 2013-05-01 |
| 2 | 2013-06-02 |
+----+------------+
mysql> SELECT * FROM sites_to_report;
+---------+-----------+---------------------+------+
| site_id | report_id | last_run | rows |
+---------+-----------+---------------------+------+
| 1 | 1 | 2013-05-01 16:20:21 | 1 |
| 1 | 2 | 2013-05-03 16:20:21 | 1 |
| 2 | 2 | 2013-05-03 14:21:47 | 1 |
+---------+-----------+---------------------+------+
mysql> SELECT
-> *
-> FROM
-> report
-> INNER JOIN
-> sites_to_report
-> ON
-> sites_to_report.report_id=report.id;
+----+------------+---------+-----------+---------------------+------+
| id | date | site_id | report_id | last_run | rows |
+----+------------+---------+-----------+---------------------+------+
| 1 | 2013-05-01 | 1 | 1 | 2013-05-01 16:20:21 | 1 |
| 2 | 2013-06-02 | 1 | 2 | 2013-05-03 16:20:21 | 1 |
| 2 | 2013-06-02 | 2 | 2 | 2013-05-03 14:21:47 | 1 |
+----+------------+---------+-----------+---------------------+------+
mysql> SELECT
-> report.*
-> FROM
-> report
-> INNER JOIN
-> sites_to_report
-> ON
-> sites_to_report.report_id=report.id;
+----+------------+
| id | date |
+----+------------+
| 1 | 2013-05-01 |
| 2 | 2013-06-02 |
| 2 | 2013-06-02 |
+----+------------+
答案 3 :(得分:1)
在你给出的例子的情况下,它们在语义方面没有区别。当涉及到性能时它可能太少了......只是解析了两个不同长度的字符串......
但是,只有你给出的例子才是真的。在涉及多个表的查询中tableName.*
消除表中我们要从中选择所有列的表的消歧。
实施例:
如果您有两个表TableA
和TableB
。我们假设它们的列名相同,为Name
。如果要指定要从哪个表中选择Name
列。 Table-name
限定符有帮助。
`select TableA.Name, TableB.Name where TableA.age=TableB.age`
这就是我能说的全部。
答案 4 :(得分:0)
对于您提供的示例,唯一的区别在于语法。两个查询共享的是它们真的很糟糕。 Select *
无论你如何写它都是邪恶的,可以让你遇到各种各样的麻烦。养成列出要包含在结果集中的列的习惯。
答案 5 :(得分:0)