2012-10-28 20 views
7

सरलीकरण के लिए, मैं एक विदेशी कुंजी का उपयोग कर कई लोगों के लिए एक साथ संबंधित दो तालिकाओं, उदाहरण के लिए:प्राथमिक कुंजी एक और तालिका में विदेशी कुंजी की जरूरत नहीं है कि चयन

Users table: 
id 
name 

Actions table: 
id 
user_id 

एक उपयोगकर्ता कई कार्यों है या नहीं हो सकता है । मुझे एक एसक्यूएल चयन की आवश्यकता है जो उपयोगकर्ता आईडी को लौटाता है जिसमें क्रिया तालिका में user_id मान नहीं है।

Users Table: 
id  name 
1  John 
2  Smith 
3  Alice 

Actions Table: 
id  user_id 
1  3 
2  1 

तो मैं एक SQL क्वेरी कि प्रयोक्ता आईडी 2 (स्मिथ) देता है की जरूरत है, क्योंकि विदेशी कुंजी मान आईडी 2

मैं निम्नलिखित एसक्यूएल की कोशिश की शामिल नहीं है, लेकिन यह रिटर्न सभी उपयोगकर्ताओं आईडी :

SELECT users.id from users left join actions on actions.user_id is null 

उत्तर

11
select u.id 
from users u 
left outer join actions a on a.user_id = u.id 
where a.user_id is null 
2
SELECT u.id 
FROM users u 
LEFT JOIN actions a 
    ON a.user_id = u.id 
WHERE a.user_id IS NULL 
+0

यह कोई परिणाम नहीं मिला। – SaidbakR

+0

हाँ, मेरी क्वेरी में एक टाइपो था। – bobwienholt

4

अनुकूलित संस्करण होगा:

SELECT u.id 
FROM users u 
LEFT JOIN actions a 
ON a.user_id = u.id 
AND ISNULL(a.user_id) 
+0

यह सभी उपयोगकर्ताओं को लौटा दिया। – SaidbakR

+0

आप सही हैं मेरे पास मिस टाइप सही है: a.user_id = u.id पर – ChaosClown