কিভাবে মাইএসকিউএলের পুরো ফলাফল সেট করতে হবে?

আমি নিম্নলিখিত প্রশ্নের চেষ্টা করছি:

SELECT A,B,C FROM table WHERE field LIKE 'query%'
UNION
SELECT A,B,C FROM table WHERE field LIKE '%query'
UNION
SELECT A,B,C FROM table WHERE field LIKE '%query%'
GROUP BY B ORDER BY B ASC LIMIT 5

যে তিনটি প্রশ্ন একসঙ্গে আটকে আছে, kinda sorta যাইহোক, ফিরে আসে ফলাফল সেট ক্যোয়ারী থেকে ফলাফল প্রতিফলিত # 3 জিজ্ঞাসা থেকে ফলাফল আগে # 1 যা undesired হয়।

এইগুলি অগ্রাধিকার দেওয়ার কোন উপায় আছে যাতে ফলাফলগুলি # 1 অনুসন্ধানের জন্য আসে, তাহলে প্রশ্ন # 2 এর জন্য সব প্রশ্নের উত্তর # 3 এর জন্য? আমি শুধু পিএইচপি এই করতে না চান (দ্বিতীয় এবং তাই ঘোষণা না প্রথম কোয়েরি আপ দেখিয়েছেন যে ফলাফল জন্য নিয়ন্ত্রণ থাকার উল্লেখ না)

0
ro fr hi

6 উত্তর

আপনি একটি subselect হিসাবে এটি করতে পারেন, কিছু ভালো কিছু

select * from (
    SELECT A,B,C FROM table WHERE field LIKE 'query%'
    UNION
    SELECT A,B,C FROM table WHERE field LIKE '%query'
    UNION
    SELECT A,B,C FROM table WHERE field LIKE '%query%'
) ORDER BY B ASC LIMIT 5
0
যোগ

হার্ড-কোডেড মানগুলির সাথে একটি অতিরিক্ত কলাম যুক্ত করুন যা আপনি সামগ্রিক ফলাফলসেটের সাজানোর জন্য ব্যবহার করবেন, যেমন:

SELECT A,B,C,1 as [order] FROM table WHERE field LIKE 'query%'
UNION
SELECT A,B,C,2 as [order] FROM table WHERE field LIKE '%query'
UNION
SELECT A,B,C,3 as [order] FROM table WHERE field LIKE '%query%'
GROUP BY B ORDER BY [order] ASC, B ASC LIMIT 5
0
যোগ

হয়তো আপনি একটি চতুর্থ কলাম অন্তর্ভুক্ত চেষ্টা করা উচিত, এটি থেকে এসেছেন টেবিলের বিবৃতি, এবং তারপর এটি দ্বারা আদেশ এবং গ্রুপ:

SELECT A,B,C, "query 1" as origin FROM table WHERE field LIKE 'query%'
UNION
SELECT A,B,C, "query 2" as origin FROM table WHERE field LIKE '%query'
UNION
SELECT A,B,C, "query 3" as origin FROM table WHERE field LIKE '%query%'
GROUP BY origin, B ORDER BY origin, B ASC LIMIT 5
0
যোগ

যদি এমন একটি ধরণের না থাকে যা তাদের আকাঙ্ক্ষা করার জন্য অনুভূতি দেয় তবে আপনি ফলাফলগুলি একত্রিত করবেন না - শুধু 3 আলাদা রেকর্ডসেট ফেরত দিন এবং তাদের সাথে আপনার ডেটা লেয়ারের সাথে সংশ্লিষ্ট করুন।

0
যোগ

আমি অবশেষে (সমস্ত পরামর্শ তাকান) এই সমাধান এসেছিলেন, এটা আমার প্রয়োজন এবং সময় কি একটি আপস একটি বিট।

SELECT * FROM 
  (SELECT A, B, C, "1" FROM table WHERE B LIKE 'query%' LIMIT 3
   UNION
   SELECT A, B, C, "2" FROM table WHERE B LIKE '%query%' LIMIT 5)
AS RS
GROUP BY B
ORDER BY 1 DESC

এটি চতুর্থ "কলাম" থেকে মোট 5 ফলাফল সরবরাহ করে এবং আমাকে যা দেয় তা দেয়; একটি প্রাকৃতিক ফলাফল সেট (এটি AJAX এর উপর আসছে), এবং পরে একটি ওয়াইল্ডকার্ড ফলাফল সেট নিম্নলিখিত পরে

:)

/ এমপি

0
যোগ

নির্বাচন করুন স্বতন্ত্র A, B, C FROM (         'ক্যোয়ারী%' মত টেবিল WHERE ক্ষেত্র থেকে যেমন, A, B, C, 1 নির্বাচন করুন         মিলন         নির্বাচন 'এ', 'বি', 'সি', 'টেবিল'         মিলন         নির্বাচন করুন A, B, C, 3 যেমন টেবিল থেকে যেখানে ক্ষেত্র ''% query% ''     )     এএসসি LIMIT দ্বারা আদেশ 5

এটা করতে আমার উপায় হবে। আমি জানিনা কিভাবে এই দাঁড়িপাল্লা

আমি বুঝতে পারছি না

GROUP BY B ORDER BY B ASC LIMIT 5

এটি কি কেবলমাত্র শেষ নির্বাচনের জন্য ইউনিয়নটিতে প্রয়োগ করে?

কি মাইএসকিউএল আসলে আপনাকে একটি কলাম দ্বারা গোষ্ঠীভুক্ত করার অনুমতি দেয় এবং এখনও অন্য কলামগুলিতে সমষ্টি করে না?

সম্পাদনা করুন: aaahh আমি দেখতে যে MySQL আসলে কি এটি একটি বিশেষ সংস্করণ (খ) বা কিছু। আমি যে অঞ্চলের একটি বিশেষজ্ঞ হতে চেষ্টা করতে চাই না :)

0
যোগ