5

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

但不知何故,我无法将表名或表别名添加到 where 子句中的字段,即我不能使用 where T2.STATUS=1。有什么方法可以始终考虑STATUS=1from where 子句,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总是意味着T2.STATUS

4

1 回答 1

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 列的名称不同,但即使这样似乎也很极端。

于 2012-04-25T06:49:04.823 回答