簡體   English   中英

子查詢不起作用

[英]Sub-query doesn't work

這是我的架構:

Table "Questoes";
    +----------+--------------+------+-----+---------+----------------+
    | Field    | Type         | Null | Key | Default | Extra          |
    +----------+--------------+------+-----+---------+----------------+
    | id       | int(11)      | NO   | PRI | NULL    | auto_increment |
    | id_quest | int(11)      | NO   |     | NULL    |                |
    | questao  | varchar(255) | NO   |     | NULL    |                |
    | nivel    | int(11)      | NO   |     | NULL    |                |
    | tipo     | varchar(255) | NO   |     | NULL    |                |
    +----------+--------------+------+-----+---------+----------------+

    Table "Respostas";

    +----------+---------------+------+-----+---------+----------------+
    | Field    | Type          | Null | Key | Default | Extra          |
    +----------+---------------+------+-----+---------+----------------+
    | id       | int(11)       | NO   | PRI | NULL    | auto_increment |
    | id_quest | int(11)       | NO   |     | NULL    |                |
    | resposta | varchar(255)  | NO   |     | NULL    |                |
    | r_valido | enum('0','1') | NO   |     | NULL    |                |
    +----------+---------------+------+-----+---------+----------------+

我的查詢是:

SELECT q.questao, r.resposta 
FROM questoes q, respostas r 
WHERE q.id_quest IN (19,20,21) 
    AND q.id_quest=r.id_quest 
    AND r.r_valido = ( SELECT resposta FROM respostas WHERE r_valido= 1 )

我需要的是現場questao從表Questoes和現場resposta從表respostas其中場r_valido = 1 字段resposta有4個結果,只有一個有效,換句話說,字段r_valido = 1

您的查詢應如下所示:

SELECT q.questao, r.resposta FROM questoes AS q JOIN respostas AS r ON r.id_quest = q.id_quest WHERE q.id_quest IN (19,20,21)  AND r.r_valido = "1"

另外,我發現在查詢中使用1而不是"1"時,是什么導致了這個奇怪的錯誤:

強烈建議您不要將數字用作枚舉值,因為它不會在適當的TINYINT或SMALLINT類型上節省存儲空間,並且很容易混淆字符串和基礎數字值(可能不相同)如果您錯誤地引用了ENUM值

我不完全了解您,但是我認為這是您想要的:

SELECT q.questao, r.resposta
FROM questoes as q
INNER JOIN respostas as r
    ON q.id_quest=r.id_quest 
WHERE
    q.id_quest IN (19,20,21) AND
    r.r_valido = '1'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM