mysql - MySQL 选择和加入 - 不明确的列
问题描述
我正在尝试将四个表连接在一起。当我只比较 EVENT_DATA 并加入 PERSONA 表时,代码工作正常,因为我能够从 PERSONA 获取“名称”列(EVENT_DATA 表中不存在该列)。但是,问题之一是这个“名称”列也存在于 CUSTOMCAR 表中,所以我只能取其一。此外,当我尝试添加最后一个 join 语句时,代码根本不会运行。
如果有人可以帮助我,那就太好了!
$sql = "SELECT * FROM EVENT_DATA
LEFT JOIN PERSONA ON EVENT_DATA.personaId = PERSONA.ID
LEFT JOIN CUSTOMCAR ON CUSTOMCAR.ownedCarId = EVENT_DATA.carId
LEFT JOIN CARCLASSES ON CARCLASSES.store_name = CUSTOMCAR.name
WHERE (EVENT_DATA.EVENTID = '299')";
解决方案
您还可以使用别名:
$sql = "SELECT ed.*,
pa.*,
cc.*,
ccs.*
FROM EVENT_DATA AS ed
LEFT JOIN PERSONA AS pa ON ed.personaId = pa.ID
LEFT JOIN CUSTOMCAR AS cc ON cc.ownedCarId = e.carId
LEFT JOIN CARCLASSES AS ccs ON ccs.store_name = cc.name
WHERE (ed.EVENTID = '299')";
注意:尽管正如@Lukasz所建议的那样,您确实应该避免使用通配符(*)SELECT
,并在子句中提供明确的列列表。
推荐阅读
- python-3.x - NameError:名称“lname”未定义
- c# - 'The LINQ expression node type 'Invoke' is not supported in LINQ to Entities' when lambda is passed as a parameter, but not when used directly
- java - 使用后初始化数组
- c++ - C++ How to compare classes
- go - Where are go tools stored?
- c# - 如何使用 dnlib 添加对 MessageBox.Show() 的调用?
- pdf-generation - High resolution scatterplot in GNUPlot?
- android - ionic 3在后台应用程序上保持套接字连接打开
- verilog - 该代码的等效硬件电路是什么?
- javascript - Get shuffled, non-repeated items across multiple pages