MySQL Query 2内连接?

时间:2011-09-12 18:50:37

标签: mysql

我的mysql中的sql查询有问题。在sqlite3和sql server中都可以。

SELECT        `buildings`.*
FROM          `buildings`
  INNER JOIN  "floors"
  ON          "floors"."building_id" = "buildings"."id"
  INNER JOIN  "spaces"
  ON          "spaces".floor_id = "floors".id

也许我需要在mysql中以其他方式处理?

感谢

3 个答案:

答案 0 :(得分:2)

MySQL将引号("floors")中的单词视为字符串,因此这些值不用作表/字段名称。尝试

SELECT ...
...
INNER JOIN floors ON floors.building_id = buildings.id
INNER JOIN spaces ON spaces.floor_id = floors.id

代替。仅当表/字段名称是保留字时,才需要围绕表/字段名称的反引号。 buildings不是保留字,因此不需要反引号。

答案 1 :(得分:0)

ANSI_QUOTES可能未启用。来自手册 ref

  

如果启用了ANSI_QUOTES SQL模式,也允许在双引号内引用标识符:

mysql> CREATE TABLE "test" (col INT);
ERROR 1064: You have an error in your SQL syntax...
mysql> SET sql_mode='ANSI_QUOTES';
mysql> CREATE TABLE "test" (col INT);
Query OK, 0 rows affected (0.00 sec)

确保启用了ANSI_QUOTES,或者只是坚持使用传统的反引号(`)

这也是,从你模糊的问题来看,假设我有正确的问题可以追逐。

答案 2 :(得分:0)

SELECT        `buildings`.*
FROM          `buildings`
  INNER JOIN  `floors`
  ON          `floors`.`building_id` = `buildings`.`id`
  INNER JOIN  `spaces`
  ON          `spaces`.`floor_id` = `floors`.`id`

SELECT        buildings.*
FROM          buildings
  INNER JOIN  floors
  ON          floors.building_id = buildings.id
  INNER JOIN  spaces
  ON          spaces.floor_id = floors.id

不要使用:“。 这是MySql中的String。