Mysql 如何调节变量,使其接受IN子句中的所有值
我很犹豫,我还没有找到解决办法,所以我转向这里。 快速解释一下,假设我想按如下方式过滤查询:Mysql 如何调节变量,使其接受IN子句中的所有值,mysql,Mysql,我很犹豫,我还没有找到解决办法,所以我转向这里。 快速解释一下,假设我想按如下方式过滤查询: SELECT name FROM students WHERE courseCode IN (17, 18, 19); 在这里,我将获得注册课程17或18或19的学生 现在,你如何让这三门课程的学生入学?也就是说,在17和18和19中 当您知道“courseCode”值是什么时,它可能很简单,但是当您通过子查询获得这些值时,您将如何做到这一点 大概是这样的: SELECT name FROM stud
SELECT name FROM students WHERE courseCode IN (17, 18, 19);
在这里,我将获得注册课程17或18或19的学生
现在,你如何让这三门课程的学生入学?也就是说,在17和18和19中
当您知道“courseCode”值是什么时,它可能很简单,但是当您通过子查询获得这些值时,您将如何做到这一点
大概是这样的:
SELECT name FROM students WHERE courseCode = 17 and courseCode = 18 and courseCode = 19;
当我知道这些值时(这是不正确的)
但是,当我不知道它们是什么价值观时,我该怎么办?像这样:
SELECT name FROM students WHERE courseCode IN (SELECT courseCode FROM course WHERE ...);
我希望你已经很好地解释了我,谢谢你的帮助这里有一种可能的方法,与一组人一起崩溃,得到不同的coursecode的计数,并将其与文字进行比较:
SELECT s.name
FROM students s
WHERE s.courseCode IN (17,18,19)
GROUP BY s.name
HAVING COUNT(DISTINCT s.courseCode) = 3
(17,18,19)
可以替换为子查询。但我倾向于使用内联视图和联接操作
SELECT s.name
FROM students s
JOIN ( SELECT 17 AS courseCode
UNION ALL SELECT 18
UNION ALL SELECT 19
) c
ON c.courseCode = s.courseCode
GROUP BY s.name
HAVING COUNT(DISTINCT s.courseCode) = 3
对内联视图c
的查询只需要返回名为courseCode
的列的不同值,并使用适当的数据类型。。。很多可能的查询都会起作用
JOIN ( SELECT foo AS courseCode
FROM bar
WHERE ...
GROUP BY foo
) c
这是一种方法的示例,还有其他方法 这里有一种可能的方法,使用GROUP BY折叠并获得不同的coursecode计数,然后将其与文字进行比较:
SELECT s.name
FROM students s
WHERE s.courseCode IN (17,18,19)
GROUP BY s.name
HAVING COUNT(DISTINCT s.courseCode) = 3
(17,18,19)
可以替换为子查询。但我倾向于使用内联视图和联接操作
SELECT s.name
FROM students s
JOIN ( SELECT 17 AS courseCode
UNION ALL SELECT 18
UNION ALL SELECT 19
) c
ON c.courseCode = s.courseCode
GROUP BY s.name
HAVING COUNT(DISTINCT s.courseCode) = 3
对内联视图c
的查询只需要返回名为courseCode
的列的不同值,并使用适当的数据类型。。。很多可能的查询都会起作用
JOIN ( SELECT foo AS courseCode
FROM bar
WHERE ...
GROUP BY foo
) c
这是一种方法的示例,还有其他方法 我相信您可以在这里使用
ALL
条件。只需将中的换掉,让它继续运行。我相信您可以在这里使用ALL
条件。只需将
中的换掉,让它继续运行。