回答
的差异之间的区别是,他们中的一个包含表名的两倍。
你的意思是性能或其他方面没有区别? –
我的意思是说,除了其中一个重复表名外,对于所有意图和目的而言,没有区别。 – Oded
@JohnnyCash啊你应该问这个问题是具体的 – pinkpanther
[TableName]。[column]通常用于查找在连接或复合语句中存在两个表时希望使用的表,并且您想要定义哪个列使用相同的列名称。
虽然最常见的用法是在一个连接中,但对于一个基本的语句,比如上面的那个,没有区别,输出也是一样的。
在你给出的例子的情况下,它们在语义上没有区别。当涉及到性能时,它可能太少......只是解析两个不同长度的字符串......
但是,这只适用于你给出的例子。在涉及多个表的查询中,tableName.*
消除了我们希望从哪个表中选择所有列的表。
示例: 如果您有两张表TableA
和TableB
。假设他们具有相同名称的列Name
。如果要指定要从哪个表中选择Name
列。 Table-name
限定词有帮助。
`select TableA.Name, TableB.Name where TableA.age=TableB.age`
这就是我所能说的。
这是不正确的,但只在上述例子中。只要涉及多个表格,就会出现语义差异。 – cproinger
@cproinger我的答案是针对他提供的实例...问题太短,我的答案也是这样......但这就是我想要的,他想知道使用'*'和'table是否有区别。 *'不超过,我想.... – pinkpanther
@cproinger看到有一个upded,Oded的回答他做得太笼统了.... – pinkpanther
在你的情况下没有区别。它出现了,当你从多个表中选择。 *从所有表格TABLE_NAME获取数据。* - 来自这个表格的所有数据。假设,我们有一个包含两个表的数据库:
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 |
+----+------------+
对于您提供的示例,唯一不同之处在于语法。这两个问题的共同之处在于它们确实很糟糕。无论你如何写它,都可能会造成各种麻烦。养成列出你想要包含在结果集中的列的习惯。
- 1. select *和count的区别(*)
- 2. Windows select和Unix之间的区别select for nonblocking sockets
- 3. LINQ - .Select(n => n.Name)和.Select(n => new {n.Name})之间的区别;
- 4. Select和Project Operations之间的区别
- 5. select()和table.select()之间的区别
- 6. jQuery:.select()和.focus()方法的区别
- 7. “select max”和“select .. where column = max”有什么区别?
- 8. SQLite中为什么select count(*)和select * query planning有区别?
- 9. GCD Dispatch Sources和select()有什么区别?
- 10. 用别名值填充列表框使用select select stats
- 11. 参考别名在SELECT列表
- 12. SQL别名SELECT语句
- 13. 别名未知SELECT在MySQL
- 14. SQL SELECT JOIN列别名
- 15. mysqlnd_qc与SELECT之间的区别SQL_CACHE
- 16. SELECT类别从映射表
- 17. UNION中的SELECT表名
- 18. select()方法中的expr()的QueryBuilder别名
- 19. PostgreSQL分区。 SELECT
- 20. OData select语句中的别名
- 21. T-SQL,SQL Server Compact Edition,SELECT的别名
- 22. mysql中的别名select查询
- 23. 类别select with parent_id和级别指示
- 24. NUM_ROWS与“SELECT * FROM表格名”
- 25. Mysql select总计和名称
- 26. 当调用OPENROWSET时INSERT INTO和SELECT INTO之间的区别
- 27. select,epoll,kqueue和evport之间的根本区别是什么?
- 28. Rails活动记录的select和group有什么区别?
- 29. select()和selectAll()之间的区别是什么
- 30. XSLT选择值和变量select之间的区别
在发布之前,您是否尝试过独立研究?这似乎是您可以通过快速Google搜索找到合理答案的那种问题。 –
尝试查看执行计划以查看是否有差异。 – harpo