[英]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.