For the answer to 1), the mysql documentation http://dev.mysql.com/doc/refman/5.0/en/select.html:
A select_expr can be given an alias using AS alias_name. The alias is
used as the expression's column name and can be used in GROUP BY
,
ORDER BY
, or HAVING
clauses. For example:
SELECT CONCAT(last_name,', ',first_name) AS full_name FROM mytable
ORDER BY full_name;
The AS keyword is optional when aliasing a select_expr with an
identifier. The preceding example could have been written like this:
SELECT CONCAT(last_name,', ',first_name) full_name FROM mytable
ORDER BY full_name;
However, because the AS is optional, a subtle problem can occur if you
forget the comma between two select_expr expressions: MySQL interprets
the second as an alias name. For example, in the following statement,
columnb is treated as an alias name:
SELECT columna columnb FROM mytable;
For this reason, it is good practice to be in the habit of using AS
explicitly when specifying column aliases.
It is not permissible to refer to a column alias in a WHERE clause,
because the column value might not yet be determined when the WHERE
clause is executed. See Section C.5.5.4, “Problems with Column
Aliases”.
This also very similar syntactically for tables:
A table reference can be aliased using tbl_name AS alias_name or
tbl_name alias_name:
SELECT t1.name, t2.salary FROM employee AS t1, info AS t2 WHERE
t1.name = t2.name;
SELECT t1.name, t2.salary FROM employee t1, info t2 WHERE t1.name =
t2.name;
For the Answer to 2) I don't think there is anyway you can tell without a full description of the software versions, query being run and error messages received.