MySQL查询结果
表名:学生。 表我有:MySQL查询结果
mysql> SELECT * from Students;
+-----------+-------------+-------+
| Rollno | Name | Marks |
+-----------+-------------+-------+
| 251602122 | Sumit Tyagi | 70 |
| 251602121 | parveen | 90 |
+-----------+-------------+-------+
以下查询返回以下结果甚至8是不是一个属性。
mysql> select 8 from Students;
+---+
| 8 |
+---+
| 8 |
| 8 |
+---+
同样
mysql> SELECT 'some_string' from Students;
+-------------+
| some_string |
+-------------+
| some_string |
| some_string |
我只是想知道为什么会这样。
该查询返回表中每条记录的一行。
但是你不从这些记录中选择数据。您只需为每行选择号码8
。然后返回。
但为什么这返回? –
我认为如果你做'SELECT name,8',就很容易理解。发生这种情况是因为,如果需要像“SELECT name,2 * marks' –
Select语句在表中查找列名。您可以确保SQL使用TableName.ColumnName
在表中查找列名。
在您编写的示例中,您要求从不是列名称的表中返回一个常量或硬编码值8
/some_string
。所以它会返回您要求的硬编码或常量值,次数等于表中的行数。
如果您想确保它查找列名称,请使用我提到的语法作为TableName.ColumnName
。您也可以为您的表提供别名。所以在上面的例子中,如果您使用的语法
SELECT Students.8 from Students;
或
SELECT s.8 FROM Students s;
它会寻找列名作为8
,而不是常量或硬编码值8
。
如果我没有错,在编写查询时最好使用TableName.ColumnName
或alias.ColumnName
,因为它会检查该特定表中的列名。
'表等计算结果,您总是可以创建额外的字段列。列“不是”强迫“的问题;当且仅当只有一个包含该列的表时,SQL才允许使用“列”。 – philipxy
你每次在表中有行时选择一个字面值(数字和值在引号中是字面值并按原样选择),当然结果是正确的。 – scaisEdge
为什么“MySql错误的查询结果”是标题,如果你不知道行为? – money
我明白这个问题不是一个很有趣的问题,因为它是一个基本的sql的东西,但问题不是太糟糕而留下太多的负面影响。这个问题写得很好,OP正在努力学习。 –