Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 其中子查询=0_Mysql_Sql - Fatal编程技术网

Mysql 其中子查询=0

Mysql 其中子查询=0,mysql,sql,Mysql,Sql,我试图写一个查询,检查一个问题是否有任何答案被标记为正确答案 SELECT `eu_questions`.`id`, `title` FROM `eu_questions` LEFT JOIN `eu_answers` ON `question_id` = `eu_questions`.`id` AND `correct` = 1 WHERE `eu_questions`.`id` IS NULL ORDER BY `eu_questions`.`id` ASC

我试图写一个查询,检查一个问题是否有任何答案被标记为正确答案

SELECT
    `eu_questions`.`id`, `title`
FROM
    `eu_questions`
LEFT JOIN
    `eu_answers` ON `question_id` = `eu_questions`.`id` AND `correct` = 1
WHERE 
    `eu_questions`.`id` IS NULL
ORDER BY `eu_questions`.`id` ASC
LIMIT 0, 10;
现在我尝试使用子查询,并尝试将子查询设置为用户定义的变量

测试1 测试2 这些查询不会导致错误,它们只返回0个结果,我不明白为什么?我尝试在选择时比较用户定义的变量,这似乎有效并返回正确的值,因此这会让我更加恼火

我是这样检查的:

SELECT
    @id := `id` AS `id`,
    @count_correct := (SELECT COUNT(`id`) FROM `eu_answers` WHERE `question_id` = @id AND `correct` = 1) AS `count_correct`,
    CAST(@count_correct AS UNSIGNED) = 0
FROM
    `eu_questions`
ORDER BY `id` ASC
LIMIT 0, 10;
答案-感谢 我以他的例子结束了这个问题,这符合我的需要

SELECT *
FROM `eu_questions`
WHERE
    1 != ANY (
        SELECT COUNT(`id`)
        FROM `eu_answers`
        WHERE `question_id` = `eu_questions`.`id`
        AND `correct` = 1
    )
ORDER BY `id` ASC
LIMIT 0, 10;

您可以在答案表上留下JOIN,并使用where子句只保留没有正确答案的问题

SELECT
    `eu_questions`.`id`, `title`
FROM
    `eu_questions`
LEFT JOIN
    `eu_answers` ON `question_id` = `eu_questions`.`id` AND `correct` = 1
WHERE 
    `eu_questions`.`id` IS NULL
ORDER BY `eu_questions`.`id` ASC
LIMIT 0, 10;
给你:

SELECT *
FROM eu_questions
WHERE 1 = ANY (
  SELECT correct
  FROM eu_answers
  WHERE question_id = eu_questions.id
);

根据需要添加额外的WHERE和LIMIT条件…

除我之外的任何人都拒绝使用水平滚动条?1052-字段列表中的“id”列不明确当查询中的两个表都有id列时会发生错误。因此,eu_问题和eu_答案都有一个id。您需要指定在select和order by以及ONTANKS中引用哪个表的id,这是一个经过修改的版本!我把它添加到问题中itself@Vallentin您的查询还返回没有正确答案的问题。那些答案只有一个的人不知道。为什么您觉得需要使用COUNT?最重要的是,COUNT只返回一行,因此不需要任何,您可以只使用0,因为我希望查询返回没有任何答案或有多个答案的问题。@Vallentin OK,但是你应该用不同的措辞来回答你的问题:我试着写一个查询,检查一个问题是否有任何被标记为正确答案的答案。
SELECT *
FROM eu_questions
WHERE 1 = ANY (
  SELECT correct
  FROM eu_answers
  WHERE question_id = eu_questions.id
);