অন্যান্য মন্তব্য অনুসারে দ্বিতীয় সাধারণ টেবিল এক্সপ্রেশন [সিটিই] এর আগে কমা একটি বিবৃতির সাথে নয়
WITH cte1 AS (SELECT...)
, cte2 AS (SELECT...)
SELECT *
FROM
cte1 c1
INNER JOIN cte2 c2
ON ........
আপনার প্রকৃত ক্যোয়ারীর ক্ষেত্রে এই বাক্য গঠনটি পোস্টগ্রেএসকিএল, ওরাকল এবং এসকিএল-সার্ভারে কাজ করা উচিত, তবে পরে সাধারণত আপনি WITH
একটি সেমিকোলন ( ;WTIH
) নিয়ে এগিয়ে যাবেন , তবে এটি সাধারণত কারণ হিসাবে এসকিএল-সার্ভার ভাবেন (আমার অন্তর্ভুক্ত) শেষ হয় না সিটিই সংজ্ঞায়িত হওয়ার আগে পূর্বের বিবৃতিগুলি শেষ করা দরকার ...
তবে খেয়াল করুন যে আপনার WHERE
বিবৃতিতে আপনার দ্বিতীয় সিনট্যাক্স সমস্যা ছিল । WHERE date IN table_2
বৈধ নয় কারণ আপনি কখনই টেবিল_2 থেকে কোনও মান / কলামটি প্রকৃতপক্ষে উল্লেখ করেন না। আমি পছন্দ INNER JOIN
উপর IN
বা Exists
তাই এখানে একটি বাক্য গঠন করে একটি সঙ্গে কাজ করা উচিত নয় JOIN
:
WITH table_1 AS (
SELECT GENERATE_SERIES('2012-06-29', '2012-07-03', '1 day'::INTERVAL) AS date
)
, table_2 AS (
SELECT GENERATE_SERIES('2012-06-30', '2012-07-13', '1 day'::INTERVAL) AS date
)
SELECT *
FROM
table_1 t1
INNER JOIN
table_2 t2
ON t1.date = t2.date
;
আপনি যদি রাখেন এমনভাবে রাখতে চান যা সাধারণত উপস্থিত থাকে যা IN এর চেয়ে ভাল তবে IN ব্যবহার করার জন্য আপনাকে আপনার যেখানে সত্যিকারের নির্বাচনী বিবৃতি প্রয়োজন।
SELECT *
FROM
table_1 t1
WHERE t1.date IN (SELECT date FROM table_2);
আমি খুব সমস্যাযুক্ত যখন date
সম্ভাব্য হতে পারে NULL
তাই আপনি যদি একটি ব্যবহার করতে না চান JOIN
তবে আমি পরামর্শ দেব EXISTS
। নিম্নরূপ:
SELECT *
FROM
table_1 t1
WHERE EXISTS (SELECT * FROM table_2 t2 WHERE t2.date = t1.date);
with
বিবৃতি দেওয়ার আগে কমা দিয়ে চেষ্টা করুন অন্য কোনও পরে।