我的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中以其他方式处理?
感谢
答案 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。