2012-10-01 49 views
0
SELECT add.id_address, 
     add.alias, 
     add.firstname, 
     add.lastname, 
     add.postcode, 
     add.city, 
     add.address1, 
     add.address2, 
     cl.name as country 
FROM address add, 
    country_lang cl 
WHERE add.id_customer=2 AND cl.id_lang=3 
AND add.id_country=cl.id_country AND add.active=1 
ORDER BY add.id_address ASC 

回答

5

请勿使用add作为表别名。它是一个保留关键字。

+0

非常感谢。我已经疯了。 – user1711597

+1

没问题。 StackOverflow是解决问题和传播知识。 我很高兴我可以做同样的事情。快乐的编码。 :) – JHS

1

addreserved keyword你要逃避它,或使用其他别名,像FROM address a,而不是FROM address add它像这样:

SELECT a.id_address, a.alias, a.firstname, 
    a.lastname, a.postcode, a.city, 
    a.address1, a.address2, cl.name as country 
FROM address a, country_lang cl 
WHERE a.id_customer = 2 AND cl.id_lang=3 
    AND a.id_country = cl.id_country 
    AND a.active=1 
ORDER BY a.id_address ASC 
1

你必须使用backtick如果你想在下列方式使用reserved keyword

SELECT `add`.id_address, `add`.alias, `add`.firstname, 
     `add`.lastname, `add`.postcode, `add`.city, 
     `add`.address1, `add`.address2, cl.name as country 
    FROM address `add`, country_lang cl 
    WHERE `add`.id_customer = 2 AND cl.id_lang=3 
     AND `add`.id_country = cl.id_country 
     AND `add`.active=1 
    ORDER BY `add`.id_address ASC 

除了例外情况,我建议您使用以下方式的JOIN:

SELECT a.id_address, 
     a.alias, 
     a.firstname, 
     a.lastname, 
     a.postcode, 
     a.city, 
     a.address1, 
     a.address2, 
     cl.name as country 
FROM address a JOIN country_lang cl ON a.id_country=cl.id_country 
WHERE a.id_customer=2 AND cl.id_lang=3 AND a.active=1 
ORDER BY a.id_address ASC