我有一个select查询,其中我加入了几个表T1
和T2
,并且这两个表都有一个名为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
答案 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列的名称不同,但即便如此也是如此。