Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menyelesaikan ORA-00918: 'lajur ditakrifkan secara samar-samar' dalam SQL SELECT * Pertanyaan?

Bagaimana untuk Menyelesaikan ORA-00918: 'lajur ditakrifkan secara samar-samar' dalam SQL SELECT * Pertanyaan?

DDD
Lepaskan: 2025-01-13 21:24:47
asal
103 orang telah melayarinya

How to Resolve ORA-00918:

*Ralat Oracle ORA-00918: Menyelesaikan Lajur Kabur dalam PILIH Penyata**

Melaksanakan pertanyaan SELECT * yang melibatkan berbilang jadual dengan lajur yang dinamakan sama sering mengakibatkan ralat ORA-00918: "lajur ditakrifkan secara samar-samar." Kekaburan ini timbul kerana pangkalan data tidak dapat menentukan lajur jadual mana yang hendak diambil apabila berbilang jadual berkongsi nama lajur.

Pertimbangkan contoh ini:

<code class="language-sql">SELECT *
FROM
  (SELECT DISTINCT(coaches.id),
    people.*,
    users.*,
    coaches.*
  FROM "COACHES"
  INNER JOIN people ON people.id = coaches.person_id
  INNER JOIN users ON coaches.person_id = users.person_id
  LEFT OUTER JOIN organizations_users ON organizations_users.user_id = users.id
) WHERE rownum <p>To correct this, replace the ambiguous `SELECT *` with a specific column selection.  For instance:</p><p>Instead of selecting all columns (`SELECT *`), explicitly list the desired columns and use aliases to resolve ambiguity:</p>SELECT
  coaches.id AS COACHES_ID,
  people.name,
  users.email,
  coaches.team
FROM ...  -- Rest of your query remains the same

This approach assigns unique aliases (e.g., `COACHES_ID`) to each selected column, eliminating the ambiguity.  Alternatively, omit duplicate columns entirely, selecting only the necessary data.

Best practice dictates avoiding `SELECT *` in production SQL.  Explicitly defining columns enhances code clarity, maintainability, and reduces the risk of errors caused by ambiguous column names.</code>
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan ORA-00918: 'lajur ditakrifkan secara samar-samar' dalam SQL SELECT * Pertanyaan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan