1

这是我的架构:

    表“问题”;
    +----------+--------------+------+-----+---------+ ----------------+
    | 领域 | 类型 | 空 | 钥匙 | 默认 | 额外 |
    +----------+--------------+------+-----+---------+ ----------------+
    | 编号 | 整数(11) | 否 | 优先级 | 空 | 自动增量 |
    | id_quest | 整数(11) | 否 | | 空 | |
    | 问题 | varchar(255) | 否 | | 空 | |
    | 尼维尔 | 整数(11) | 否 | | 空 | |
    | 提示 | varchar(255) | 否 | | 空 | |
    +----------+--------------+------+-----+---------+ ----------------+

    表“回复”;

    +----------+----------------+------+-----+--------- +----------------+
    | 领域 | 类型 | 空 | 钥匙 | 默认 | 额外 |
    +----------+----------------+------+-----+--------- +----------------+
    | 编号 | 整数(11) | 否 | 优先级 | 空 | 自动增量 |
    | id_quest | 整数(11) | 否 | | 空 | |
    | 回复 | varchar(255) | 否 | | 空 | |
    | r_valido | 枚举('0','1') | 否 | | 空 | |
    +----------+----------------+------+-----+--------- +----------------+

我的查询是:

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字段 where field r_valido = 1。该字段resposta有 4 个结果,并且只有一个有效,即字段r_valido = 1.

4

2 回答 2

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 值

于 2013-08-31T18:25:22.800 回答
1

我没有完全理解你,但我认为这就是你要找的:

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'
于 2013-08-31T18:26:13.277 回答