ホームページ > データベース > mysql チュートリアル > PostgreSQL の WHERE 句でエラーなくエイリアスを使用する方法

PostgreSQL の WHERE 句でエラーなくエイリアスを使用する方法

Linda Hamilton
リリース: 2025-01-20 20:16:16
オリジナル
228 人が閲覧しました

How to Use Aliases in PostgreSQL WHERE Clauses Without Errors?

Avoiding "column does not exist" Errors When Using Aliases in PostgreSQL WHERE Clauses

PostgreSQL クエリは、WHERE 句内でエイリアスを使用すると、エイリアスが SELECT リストで定義されている場合でも、「列が存在しません」エラーをスローすることがあります。 This happens because the WHERE clause is processed before the SELECT list, meaning the alias isn't yet recognized.

To overcome this, use a WITH clause (also known as a Common Table Expression or CTE). A WITH clause creates a temporary named result set, allowing you to reference the alias within the main query.

Here's an example illustrating the solution:

<code class="language-sql">WITH jobs_with_lead_state AS (
    SELECT
        jobs.*,
        CASE WHEN lead_informations.state IS NOT NULL THEN lead_informations.state ELSE 'NEW' END AS lead_state
    FROM jobs
    LEFT JOIN lead_informations
        ON lead_informations.job_id = jobs.id
        AND lead_informations.mechanic_id = 3
)
SELECT *
FROM jobs_with_lead_state
WHERE lead_state = 'NEW';</code>
ログイン後にコピー

This revised query defines a CTE named jobs_with_lead_state. The CTE performs the initial SELECT and JOIN operations, generating the lead_state alias. The main query then uses this CTE, allowing the WHERE clause to correctly reference lead_state. This approach avoids the error by ensuring the alias is available during WHERE clause evaluation.

以上がPostgreSQL の WHERE 句でエラーなくエイリアスを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート