Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL एक ही SQL में सूची में और सूची में नहीं चुनें

एक बाहरी जॉइन स्टेटमेंट जेनरेट करें ताकि आपको मिल सके:

SELECT ids.id, table_live.moderation_date
FROM (select 1 id union all select 2 union all ....) ids
LEFT JOIN table_live
ON ids.id = table_live.id

जहां आईडी सभी मानों की गणना करने वाली एक उपश्रेणी है, कुछ इस तरह:

$ids = '1,2,3,4,5'
$subquery = 'select '.str_replace(',', ' id union all select ', $ids).''
$sql = "SELECT ids.id, table_live.moderation_date
FROM ($subquery) ids
LEFT JOIN table_live
ON ids.id = table_live.id"

ids.id . का चयन करना सुनिश्चित करें , नहीं table_live.id . इस तरह, आईडी हमेशा दिखाई देंगी, और मॉडरेशन_डेट तभी दिखाई देगी जब संबंधित पंक्ति table_live में मौजूद हो।

एक और तरीका यह होगा कि क्वेरी को वैसे ही रखा जाए जैसा आपके पास था, परिणाम को एक सरणी में संग्रहीत करें, और फिर सरणियों को php में मर्ज करें ताकि आप सभी कुंजियों को बनाए रखें, और केवल उन मानों को भरें जहां कुंजी दोनों सरणियों में मेल खाती है।

मुझे सच में यकीन नहीं है कि आप किस प्रकार की डीबी लाइब्रेरी का उपयोग कर रहे हैं, इसलिए मुझे नहीं पता कि परिणाम की सरणी कैसे प्राप्त करें, लेकिन मान लीजिए कि आपने आईडी के स्ट्रिंग प्रस्तुति का उपयोग करके पंक्तियों को एक PHP सरणी में संग्रहीत किया होगा कुंजी, और दिनांक मान के रूप में, तो इस कोड को चाल चलनी चाहिए:

$items = array(
    '1' => NULL
,   '2' => NULL
,   ...
); 
//note: use string keys in order to merge!!
$result = array_merge($items, $resultset);

देखें:http://php.net/manual/en/function.array -मर्ज.php




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. डेटाबेस अपडेट होने पर C# क्लाइंट को अपडेट करें

  2. MySQL ट्रिगर किसी अन्य तालिका में सम्मिलित करें

  3. क्या मैं gcloud sql कमांड का उपयोग करके अपने Google क्लाउड Sql उदाहरण पर एक sql फ़ाइल चला सकता हूँ?

  4. MySQL COUNT () एकाधिक कॉलम

  5. Mysql में रो आईडी कैसे प्राप्त करें