将数字作为Sql的select语句中的列名称传递

时间:2012-12-03 13:46:02

标签: mysql

我的查询就像这样

select 5 from mytable_name;

然后输出就像列名5一样,值为5,打印该表中存在的最大行数。 任何人都能说出这个查询的工作原理吗?

5 个答案:

答案 0 :(得分:2)

  

有人可以说出这个查询的工作原理吗?

您正在为表格中的每一行选择一个字符串文字值'5'

select 5 from mytable_name;

这很好用。因为在SELECT语句中您可以选择:

  • 列参考,
  • 像你的情况一样的字面值。
  • 功能
  • 值表达。
  • 选择表达。

由标准SQL 1

定义

enter image description here

<强>更新

但是,如果您的名称列是一个类似于您的情况的数字,则必须将其转义才能选择其中的值,如下所示:

 SELECT `143` FROM Table1;

这将选择列143中的所有行。

但是,这个:

 SELECT 143 FROM Table1;

将为表中找到的每一行选择字符串文字143。

请注意:如果可能,请尽量不要以这种方式命名这些列,建议这是最佳做法,不要这样做。

SQL Fiddle Demo


更新2:

请注意,如果您选择143'143',甚至"143",则会选择字面值143而不是列日期。以下是相同的:

SELECT 143 FROM Table1;
SELECT '143' FROM Table1;
SELECT "143" FROM Table1;

所有这些SELECT都不会选择列中的数据,它们将选择文字值143而不是列数据。看这个演示:

Demo

您必须使用以下两个来转义列名:

``

像这样:

SELECT `143` FROM table1;

SELECT '143' FROM table1'

就像我在这里所做的那样:

The right Demo


1 图片自:SQL Queries for Mere Mortals

答案 1 :(得分:1)

from mytable
如果没有缩小该结果的where条件,

将从表中选择所有行。和

select 5

将为每条记录选择常数5。如果您在select部分中使用列名,则将为每条记录选择该值。

数据库引擎会将结果命名为5,因为它会自动生成列名称,而5是该名称的逻辑名称。

答案 2 :(得分:1)

你想要&#39; SELECT * FROM mytable_name LIMIT 0,5&#39;也许?

答案 3 :(得分:0)

由于where子句中没有任何内容,因此它会从表中选择所有行。您没有选择任何列的事实是无关紧要的 - 您仍然会得到表格中每一行的结果。

答案 4 :(得分:0)

使用命令select 5 ...,您正在查看固定值。同样的事情你运行以下命令:select "test",你将显示一个固定的字符串 使用... from mytable_name您正在查找此表的所有记录。

有了这个,我们可以得出结论,对于表mytable_name中的每条记录,您都会显示固定值"5"