2017-08-07 1 views
-4

Tabellenname: Studenten. Die Tabelle ich habe:MySQL Query Ergebnisse

mysql> SELECT * from Students; 
+-----------+-------------+-------+ 
| Rollno | Name  | Marks | 
+-----------+-------------+-------+ 
| 251602122 | Sumit Tyagi | 70 | 
| 251602121 | parveen  | 90 | 
+-----------+-------------+-------+ 

Nach Abfrage liefert das folgende Ergebnis sogar 8 kein Attribut ist.

mysql> select 8 from Students; 
+---+ 
| 8 | 
+---+ 
| 8 | 
| 8 | 
+---+ 

Ähnlich

mysql> SELECT 'some_string' from Students; 
+-------------+ 
| some_string | 
+-------------+ 
| some_string | 
| some_string | 

Ich möchte nur wissen, warum dies geschieht.

+0

Sie wählen einfach einen Literalwert jedes Mal, wenn Sie Zeilen in Tabellen haben (Zahl und Wert in Anführungszeichen sind Literalwerte und werden so ausgewählt wie sie sind) und natürlich ist das Ergebnis richtig. – scaisEdge

+0

Warum "MySql falsches Abfrageergebnis" ist der Titel, wenn Sie das Verhalten nicht kennen? – money

+0

Ich verstehe die Frage ist nicht sehr interessant, weil es ein grundlegendes SQL-Zeug ist, aber die Frage ist nicht schlecht, zu viele negative verlassen. Die Frage ist gut geschrieben und OP versucht zu lernen. –

Antwort

1

Die Abfrage gibt eine Zeile für jeden Datensatz in Ihrer Tabelle zurück.

Sie wählen jedoch keine Daten aus diesen Datensätzen aus. Sie wählen einfach die Nummer 8 für jede Zeile. Und das wird zurückgegeben.

+0

aber warum wird das zurückgegeben? –

+0

Ich denke, ist leicht zu verstehen, wenn Sie 'SELECT name, 8'. Dies geschieht, weil Sie immer zusätzliche Feldspalten erstellen können, wenn Sie Berechnungen wie 'SELECT name, 2 * marks' –

1

Select-Anweisung sucht nach dem Spaltennamen in einer Tabelle. Sie können sicherstellen, dass SQL nach einem Spaltennamen in einer Tabelle sucht, indem Sie TableName.ColumnName verwenden.

In dem Beispiel, das Sie geschrieben haben, fragen Sie nach einem konstanten oder hartcodierten Wert 8/some_string, der von der Tabelle zurückgegeben wird, die nicht der Spaltenname ist. So wird der fest codierte oder konstante Wert zurückgegeben, den Sie angefordert haben. Die Anzahl entspricht der Anzahl der Zeilen in Ihrer Tabelle.

Wenn Sie sicherstellen möchten, dass es nach dem Spaltennamen sucht, verwenden Sie die Syntax, die ich als TableName.ColumnName erwähnt habe. Sie können auch einen Alias ​​für Ihre Tabelle angeben. So in dem obigen Beispiel wird es für Spaltennamen suchen, wenn Sie die Syntax als

SELECT Students.8 from Students; 

oder

SELECT s.8 FROM Students s; 

verwenden als 8 statt konstant oder fest codierten Wert 8.

Wenn ich nicht falsch liege, ist es eine bewährte Methode, TableName.ColumnName oder alias.ColumnName beim Schreiben von Abfragen zu verwenden, während der Spaltenname in dieser bestimmten Tabelle überprüft wird.

+0

'table benötigen.Spalte "ist keine Frage des" Forcierens "; Mit SQL können Sie genau dann "Spalte" verwenden, wenn es nur eine Tabelle mit dieser Spalte gibt. – philipxy