我可以在MySQL查询的SELECT部分​​中使用AS别名列吗?

时间:2011-12-20 18:24:51

标签: php mysql

我有一个相当复杂的查询运行,在我更改表结构并重写其他文件之前,我想知道是否有人可以告诉我这是否可行。

SELECT
    DISTINCT(users.user_id),
    (resi.curr_state WHERE resi.user_id = "users.user_id") AS current_state
FROM
    ci_users AS users, ci_residents AS resi .....
WHERE stuff HAVING current_state = '".$php_variable_ill_use."'

我很乐意在必要时分享更多代码,但我的主要问题是我是否可以在发布之前或之后首先作出声明,如果它可行的话。

2 个答案:

答案 0 :(得分:1)

这样的事可能有用:

select distinct(users.user_id),
    (select resi.curr_state 
          from ci_residents 
            AS resi_1 where resi_1.user_id = users.user_id) as current_state
FROM
    ci_users AS users, ci_residents AS resi .....
WHERE stuff HAVING current_state = '".$php_variable_ill_use."'

答案 1 :(得分:1)

有一种方法可以有条件地指定列的输出,是的:您使用CASE语句。但它看起来并不像你正在做的那样。您似乎在指定resiusers表之间的关系,通常可以使用JOIN来完成,如下所示:

SELECT
    DISTINCT(users.user_id),
    resi.curr_state AS current_state
FROM ci_users AS users
JOIN ci_residents AS resi ON users.user_id = resi.user_id

现在,鉴于您的请求背后的逻辑,我假设您想要所有 user_ids,但只有那些存在状态的状态。那是对的吗?如果是,请使用LEFT JOIN包含所有users条记录,并在相关记录存在时仅包含resi条记录。

请详细说明您是否正在尝试完成我在此处所说明的内容。