অন্যান্য মন্তব্য অনুসারে দ্বিতীয় সাধারণ টেবিল এক্সপ্রেশন [সিটিই] এর আগে কমা একটি বিবৃতির সাথে নয়
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বিবৃতি দেওয়ার আগে কমা দিয়ে চেষ্টা করুন অন্য কোনও পরে।