Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何避免;“查询”中的字段不明确;不在where子句中添加表名或表别名_Mysql_Sql_Mysql Error 1064 - Fatal编程技术网

Mysql 如何避免;“查询”中的字段不明确;不在where子句中添加表名或表别名

Mysql 如何避免;“查询”中的字段不明确;不在where子句中添加表名或表别名,mysql,sql,mysql-error-1064,Mysql,Sql,Mysql Error 1064,我有一个select查询,其中我加入了两个表,分别是T1和T2,这两个表都有一个名为STATUS的字段,我不需要获取它。在where子句中,我需要添加where STATUS=1和一些其他条件 但不知何故,我无法将表名或表别名添加到where子句中的字段,即我无法使用whereT2.STATUS=1。从WHERE子句为“代码> T1、状态< /代码>时,有没有办法总是考虑状态=1?/代码>,这样我就可以避免“模糊不清的字段错误”? 以下是一个示例查询: select T1.name, T1.ad

我有一个select查询,其中我加入了两个表,分别是
T1
T2
,这两个表都有一个名为STATUS的字段,我不需要获取它。在where子句中,我需要添加
where STATUS=1
和一些其他条件

但不知何故,我无法将表名或表别名添加到where子句中的字段,即我无法使用where
T2.STATUS=1
。从WHERE子句为“代码> T1、状态< /代码>时,有没有办法总是考虑<代码>状态=1?/代码>,这样我就可以避免“模糊不清的字段错误”?

以下是一个示例查询:

select T1.name, T1.address, T1.phone, T2.title, T2.description from T1
Left Join T2 on T1.CID=T2.ID
where STATUS = 1

在上面的查询中,我希望
STATUS=1
始终表示
T2。STATUS

如果您因为某种原因无法忍受这样做

select T1.name, T1.address, T1.phone, T2.title, T2.description from T1
Left Join T2 on T1.CID=T2.ID
where T2.STATUS = 1
那我想你可以

SELECT T1.name, T1.address, T1.phone, T2.title, T2.description 
FROM (  SELECT CID, name, address, phone
        FROM T1) AS T1
LEFT JOIN T2
ON T1.CID=T2.ID
WHERE STATUS = 1
基本上只需跳过从T1获取状态列。这样就不会有冲突


底线;没有简单的方法可以做到这一点。最简单的方法是两个状态列都有不同的名称,但这似乎是极端的。

使用alias有什么问题?让我们尝试修复它:)我想您的简化查询不包含该问题。您可以显示真实的查询吗?此查询确实包含问题,因为它不知道它是T1还是T2中的状态。但是您尝试了T1.STATUS,但它不起作用,对吗?实际上此查询是在运行时在php函数中构建的。Where子句作为参数提供给函数,不能硬编码。除状态=1或状态=0外,还有许多其他条件。我不能使用别名,因为我在整个项目中多次调用此函数,我认为最好只修改一次实际函数,而不是在每个函数调用中添加别名。或者尝试使用“T1.address,T1.phone,T2.title,T2.description FROM T1”如果外部查询有很多记录,那么子查询的速度会非常慢。