2016-04-25 5 views
-1

別のクエリのクエリに問題があります。クエリは内部の別のクエリに依存します

質問として1つのテーブルと、もう1つはユーザーが使用する質問があります。 新しい質問をクエリしようとしていますが、使用されている質問テーブルにない場合のみです。

この例では、動作しているようですが、dbテーブルで1000以上の質問があり、結果が結果に含まれていないかどうかを確認できません。

SELECT * FROM questions 
WHERE id NOT IN 
    (SELECT QiD FROM Usedquestion) 
ORDER BY RAND() 
LIMIT 1 

私には軽いものがありますか?

+0

あなたは何を質問していますか? – Quassnoi

+0

あなたが何をしているかは本当に明確ではありません。サンプルデータ、上記のクエリによって返された結果、サンプルデータに期待される結果を追加する必要があります。このようにして、何が間違っているかを確認することができます。 – Shadow

答えて

0
SELECT a FROM questions a LEFT JOIN Usedquestion b USING(id) 
WHERE b.id is null 
ORDER BY RAND() LIMIT 1; 
1
SELECT q.id,u.QiD 
FROM questions q 
LEFT OUTER JOIN Usedquestion u ON u.QiD = q.id 
WHERE u.QiD IS NULL 

これは、あなたusedquestionテーブルのIDを持っていない質問表内の質問が表示されます。

+0

Thansk devlin。あなたの例では、idが2つのテーブルに存在する場合にのみ結果が表示されます。 –

+0

これは動作しているようです。 SELECT q。 *、u.QiDからの質問q左の外側のジョイン使用されるuq.QiD!= q.idどこでu.QiD命令がRAND()LIMIT 1 によって正しいか? –

+1

@Agent_x - 私の例では、質問テーブルにのみ存在し、UsedQuestionテーブルには存在しないレコードを与えるべきです。つまり、QiDが質問IDの外部キーでない場合を除きます。それが外部キーでない場合は、2つのテーブルがどのように関連しているかを説明する必要があります。 –

関連する問題