Bunu yapmak için WHERE yan tümcesinin değerlendirildiği iç karmaşıklıklar nedeniyle yapmak mümkün değildir. Ancak, taklit ettiğiniz şey tekrar etmemek istediğiniz uzun bir ifade ise, bunun tipik bir çözümü vardır. https://forums.oracle.com/forums/thread.jspa?threadID=1107532 Gönderen:
bu standart bir çözümdür, içeri, diğer adı kullanılarak (burada-fıkra dayanaksız) bir satır içi görünümüne sorgu taşımak ve sonra -fıkra koşulu ekle dış sorgu.
Yani böyle bir şey: senin örneğin durumda
select ...
from (select ... here complex expression that is aliased ...
from ...
where) A
where ... here condition that uses the A.alias column ...
, olurdu:
SELECT d, b, c
FROM (SELECT a AS d, b, c FROM myTable) AS myAliasedTable
WHERE d = 1
Ama tabii
, bu edebi örnekte anlamlı olmaz. Takma adınız yalnızca bir sütun adı ise, o zaman sadece WHERE'deki gerçek sütun adını kullanın, bu durumda gerçek bir dezavantaj yok.
Ayrıca, bu yöntemi kullanırsanız, sonuçta boyutunu sınırlamak için dahili sorguda (başka bir sütuna gönderme yapmayan parçalar anlamına gelir) olabildiğince WHERE yan tümcesini koymanız gerektiğini unutmayın. diğer tablo. ayrıca örnekte b
üzerinde test etmek istiyorsa Örneğin, o olacaktır:
SELECT d, b, c
FROM (
SELECT a AS d, b, c
FROM myTable
WHERE b = 1
) AS myAliasedTable
WHERE d = 1
Bunu neden yapmak istersiniz? –
@JohnSaunders, çünkü belki de takma adı verilen şey, nerede yan tümce içinde yinelenmek istemediğiniz karmaşık bir ifadedir. –