sql >> Databasteknik >  >> RDS >> Mysql

Undviker ett snedstreck i ett SQL-namn? Det kan undvikas, men SQL tror att det är flera kolumner

I SQL Server kan identifierare avgränsas med hakparenteser, t.ex.

SELECT [gallons/units] ...

I MySQL kan identifierare avgränsas med hjälp av backticks, t.ex.

SELECT `gallons/units` ...

(OBS:Om MySQL SQL_MODE inkluderar ANSI_QUOTES , då behandlas dubbla citattecken som avgränsare för identifierare, på samma sätt som Oracle hanterar dubbla citattecken; Om den inställningen saknas, hanteras dubbla citattecken som avgränsare för bokstavssträngar. Med ANSI_QUOTES ingår SQL_MODE , "gallons/units" kommer att tolkas som en identifierare (kolumnnamn). Utan ANSI_QUOTES , kommer MySQL att se den som en bokstavlig sträng, som om den var omgiven av enkla citattecken.)

UPPFÖLJNING:

Så långt som ett fel "operand should contain only 1 column(s)" , det är vanligtvis ett problem med frågesemantik, inte ett problem med escape-identifierare.

En underfråga i SELECT-listan kan endast returnera ett enstaka uttryck, till exempel skulle detta ge ett fel:

Query: SELECT 'foo' , ( SELECT 'fee' AS fee, 'fi' AS fi )

Error Code: 1241
Operand should contain 1 column(s)


  1. Vilket är det största ID-numret som autoincrement kan producera i mysql

  2. SQL - Hur man väljer en rad med en kolumn med maxvärde (+ gruppera efter)

  3. HUR MAN HÄMTAR DATA MELLAN 2 DATUM I ORACLE SQL Developer

  4. ANVÄND HINT och DISABLE_OPTIMIZED_NESTED_LOOP