2012-02-28 7 views
1

私はこのSQLクエリ(下)を持っていますが、それは素晴らしいですが、最初の文字$でレコードを選択するように変更する必要があります。私は幸運なしでLIKE A%のいくつかのバリエーションを試しました。私の状況の要点は名前の別名のようです。 ORDERの前にWHERE name LIKE 'A%'を使用すると、エラーが発生します。それはそれが論理的な場所のように思えます。助言がありますか?MYSQL - 最初の文字で並べ替え

答えて

2

WHEREでこの比較のエイリアスを使用することはできません。これを試してください:

SELECT 
    IF(company_name <> '', company_name, PC_last_name) AS name, 
    customer_id AS id, 
    company_name AS cn, 
    PC_first_name AS pcf, 
    PC_last_name AS pcl, 
    primary_phone 
FROM sales_customer 
WHERE IF(company_name <> '', company_name, PC_last_name) LIKE 'A%' 
ORDER BY name 
+0

ビンゴ!完璧に働いた。エイリアスと何か関係があることがわかっていました。エイリアスで正しく動作しない理由は何ですか? –

+0

MySQLのマニュアルから* apud * [この回答](http://stackoverflow.com/a/200203/825789):WHERE句の列エイリアスを参照することはできません。 WHERE句が実行された時点で決定されます。 See [項B.1.5.4。「カラムエイリアスの問題」(http://dev.mysql.com/doc/refman/5.0/en/problems-with-alias.html)」を参照してください。 – bfavaretto

+0

その情報をありがとう!今私は知っている。 –

6

これは、nameの最初の文字です。

SELECT IF(company_name <> '', company_name, PC_last_name) AS name, customer_id AS id, company_name AS cn, PC_first_name AS pcf, PC_last_name AS pcl, primary_phone 
FROM sales_customer 
ORDER BY SUBSTRING(name, 1, 1) ASC 
+0

これは何らかのランダムソートでテーブル全体を返しました。もう一度エイリアスが問題だと思う。 –

関連する問題