Rujuk alias lajur dalam klausa WHERE
Merujuk alias lajur dalam klausa WHERE kadangkala boleh menyebabkan ralat semasa memproses pertanyaan pangkalan data. Ini kerana alias biasanya digunakan selepas klausa WHERE dinilai. Pertimbangkan pertanyaan berikut:
<code class="language-sql">SELECT logcount, logUserID, maxlogtm , DATEDIFF(day, maxlogtm, GETDATE()) AS daysdiff FROM statslogsummary WHERE daysdiff > 120</code>
Dalam pertanyaan ini, ralat berlaku kerana "daysdiff" ialah alias lajur yang dibuat dalam pernyataan SELECT. Untuk merujuk alias dalam klausa WHERE, anda boleh memaksa SQL untuk menilai pernyataan SELECT sebelum klausa WHERE. Ini boleh dicapai dengan menggunakan kurungan atau ungkapan jadual biasa (CTE).
Kurungan/Subkueri:
<code class="language-sql">SELECT * FROM ( SELECT logcount, logUserID, maxlogtm, DATEDIFF(day, maxlogtm, GETDATE()) AS daysdiff FROM statslogsummary ) as innerTable WHERE daysdiff > 120</code>
CTE:
<code class="language-sql">WITH CTE AS ( SELECT logcount, logUserID, maxlogtm, DATEDIFF(day, maxlogtm, GETDATE()) AS daysdiff FROM statslogsummary ) SELECT * FROM CTE WHERE daysdiff > 120</code>
Dengan menggunakan kurungan atau CTE, pernyataan SELECT dinilai sebelum klausa WHERE, membolehkan anda merujuk alias lajur dalam klausa WHERE tanpa ralat.
Atas ialah kandungan terperinci Bolehkah saya Menggunakan Alias Lajur dalam Klausa WHERE?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!