ยังไงฉันเอา subquery อกจากเลือกประกาศจุดประสงค์เหรอ

0

คำถาม

ฉันต้องการความช่วยเหลือในการเอาออกที่ subquery ออกจากดั้งเดิมเลือกขโยงข้างนอกนั่น นี่มันเป็นไปได้? ฉันต้องใช้เจ้านี่ที่ท้ายที่สุดย้ายไปค้นข้อมูลแบบนี้จะ Denodo/VQL ซึ่งไม่อนุญาตให้ subqueries เลือกในการให้สอบสวน(แต่อนุญาตให้ CTE/และ subqueries จาก/ไปไหน).

select case when material in (
    select material
    from schema.material_table
    where old_material like '%55AD%'
  ) then 'Found'
  else 'Not Found'
end
from schema.material_table;
1

คำตอบที่ดีที่สุด

2

ฉันเห็นสองทางเลือก มากที่สุดโดยตรงการแปลภาษาดูเหมือนจะเป็น:

SELECT CASE
         WHEN m2.MATERIAL IS NOT NULL THEN 'Found'
         ELSE 'Not Found'
       END AS IZZIT_THERE
  FROM SCHEMA.MATERIAL_TABLE m2
  RIGHT OUTER JOIN SCHEMA.MATERIAL_TABLE m1
    ON m1.MATERIAL = m2.MATERIAL
  WHERE m1.OLD_MATERIAL LIKE '%55AD%'

แต่การใช้ของ RIGHT OUTER JOIN อาจจะไม่ค่อยเหมือน. เพื่อเปลี่ยนไปมากกคุ้นเคย LEFT OUTER JOIN เราต้องการจะย้อนกลับตำแหน่งของตารางข้อมูลเรียบร้อยแล้วในการสืบค้นและเปลี่ยนแปลงได้ยังไงเงื่อนไขเป็นการแสดงรายกา:

SELECT CASE
         WHEN m1.MATERIAL IS NOT NULL THEN 'Found'
         ELSE 'Not Found'
       END AS IZZIT_THERE
  FROM SCHEMA.MATERIAL_TABLE m1
  LEFT OUTER JOIN SCHEMA.MATERIAL_TABLE m2
    ON m2.MATERIAL = m1.MATERIAL
  WHERE m1.OLD_MATERIAL LIKE '%55AD%'

ฉันเก็บชื่อเดียวกันดังนั้นคุณสามารถเห็นได้ว่าพวกเขาย้ายอยู่ในบการค้นหา. ในทั้งสองค้นข้อมูล m1 เป็นกลุ่มหลักโต๊ะนั่นคือ,มันเป็นคนที่ ต้อง ให้ข้อมูลขณะที่ m2 คือที่เกิดเหตุที่สองหรือ"ตัวเลือก"โต๊ะ-มันอาจจะหรืออาจจะไม่มีข้อมูลซึ่งตรงกับกลุ่มหลัก.

ส่วนตัวแล้วฉันอยากจะมาร่วมกับ subqueries ที่ฉันเจอมันง่ายกว่าที่จะเข้าใจแต่ YMMV.

2021-11-24 02:01:18

ในภาษาอื่นๆ

หน้านี้อยู่ในภาษาอื่นๆ

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่