我的查询是这样的
select 5 from mytable_name;
Run Code Online (Sandbox Code Playgroud)
然后输出类似于列名 5,值 5 打印该表中存在的最大行数。任何人都可以告诉这个查询为什么这样工作的原因吗?
任何人都可以告诉这个查询为什么这样工作的原因吗?
'5'您正在为表中的每一行选择一个字符串文字值:
select 5 from mytable_name;
Run Code Online (Sandbox Code Playgroud)
这很好用。因为在SELECT声明中你可以选择:
按照标准 SQL 1的定义:

更新:
但是,如果您有一列的名称是数字(就像您的情况一样),则必须对其进行转义才能选择其中的值,如下所示:
SELECT `143` FROM Table1;
Run Code Online (Sandbox Code Playgroud)
这将选择该列中的所有行143。
但是这个:
SELECT 143 FROM Table1;
Run Code Online (Sandbox Code Playgroud)
将为表中找到的每一行选择字符串文字 143。
请注意:如果可能,尽量不要以这种方式命名这些列,建议也是最佳实践,不要这样做。
请注意,如果您选择143或'143',甚至"143"这将选择文字值143而不是列日期。以下是相同的:
SELECT 143 FROM Table1;
SELECT '143' FROM Table1;
SELECT "143" FROM Table1;
Run Code Online (Sandbox Code Playgroud)
所有这些SELECT都不会选择列中的数据,它们将选择文字值143而不是列数据。看这个演示:
您必须用两个转义列名称:
``
Run Code Online (Sandbox Code Playgroud)
像这样:
SELECT `143` FROM table1;
Run Code Online (Sandbox Code Playgroud)
不是:
SELECT '143' FROM table1'
Run Code Online (Sandbox Code Playgroud)
就像我在这里所做的那样:
1图片来自:普通人的 SQL 查询