如何避免“查询中的模糊字段”而不在where子句中添加表名或表别名

时间:2012-04-25 06:34:36

标签: mysql sql mysql-error-1064

我有一个select查询,其中我加入了几个表T1T2,并且这两个表都有一个名为STATUS的字段,我不需要提取。在where子句中,我需要添加WHERE STATUS=1和更多条件。

但不知怎的,我只是不能将表名或表别名添加到where子句中的字段,即我不能使用T2.STATUS=1。有没有办法始终考虑where子句为STATUS=1的{​​{1}},以便我可以避免“模糊字段错误”?

以下是一个示例查询:

T1.STATUS

在上述查询中,我希望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

1 个答案:

答案 0 :(得分:3)

如果由于某种原因你不能忍受

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获取STATUS列。然后就没有冲突了。

底线;没有简单的方法可以做到这一点。最接近简单的那个是两个STATUS列的名称不同,但即便如此也是如此。