我有表courseID,studentName和其他表是courseID,courseName用户将根据学生名称搜索学生表中的课程名称 什么是SQL语法我应该使用吗?加入或内部连接在MySQL中,我可以将ID FK与另一个表中的varchar进行比较
回答
你可以试试这个:
select a.studentName,b.courseName
from tbl_name a
inner join tbl_name b
on a.courseID = b.courseID
此代码有错误,因为您有别名表,但未在所选列中指定该名称。 –
是的,我忘了添加别名。谢谢。 –
如果使用JOIN
和指定约束(如on a.courseId = b.courseId
)它是完全一样的,如果你使用INNER JOIN
,所以要根据你的表结构你应该这样做:
select * from studentTable
inner join courseTable
on studentTable.courseID = courseTable.courseID
where studentTable.studentName = 'Jack Black';
在MySQL中,你可以也写不出
select * from studentTable, courseTable
where studentTable.courseID = courseTable.courseID
and studentName = 'Jack Black';
,因为它在内部将以相同的方式查询。
检查出确切的语法加入这里:http://dev.mysql.com/doc/refman/5.7/en/join.html
尽管它仍然(在它们被多余的20年后)* posible *使用逗号分隔的连接,我们不应该再推荐它们用于初学者。 –
尽管如此,人们应该知道使用这种语法的可能性是存在的,因为它更常见。 –
,当你正在寻找一个连接的结果,如用他们所有的课程选择以及所有学生的名字你加入。例如: -
select s.studentname, c.coursename
from course c
join student_takes_course s on s.courseid = c.courseid;
或(如表的顺序并不重要):
select s.studentname, c.coursename
from student_takes_course s
join course c on s.courseid = c.courseid;
JOIN
只是短暂的INNER JOIN
。你也可以使用。
但是,如果您对加入的结果不感兴趣,那么不加入的好习惯。例如当你只是想从课程表中显示课程名称时,如你的例子。然后,您可以使用IN
或EXISTS
一般:
select coursename
from course
where courseid in
(
select courseid
from student_takes_course
where studentname = 'Joe'
);
或
select c.coursename
from course c
where exists
(
select *
from student_takes_course s
where s.studentname = 'Joe'
and s.courseid = c.courseid
);
(我喜欢IN
条款在EXISTS
条款对他们的简单和可能的情况下使用它们。)
- 1. 将VARCHAR与另一个VARCHAR进行比较的快速方法
- 2. PHP - 在PHP中将爆炸字与mysql varchar进行比较
- 3. 是否可以将一个MySQL TIMESTAMP与毫秒进行比较?
- 4. 如何将表中的整行与另一个表的整行进行比较
- 5. 在MySQL中比较一个表与另一个表
- 6. SQL将属性与同一个表中的另一行属性进行比较
- 7. 将数组与ArrayList中的另一个数组进行比较
- 8. 将行与单个SQL Server中的另一行进行比较表
- 9. 将一个表的名称与另一个表的列表进行比较
- 10. Mysql:将tinyint列与varchar值进行比较
- 11. 将数据库值与另一个表中的行数进行比较
- 12. 是否将一个列表中的重复项与另一个列表中的重复项进行比较,并将其与NAND操作进行比较?
- 13. 我可以将一个字符串与一个数字进行比较吗?
- 14. 在ASP.NET中将varchar与int比较
- 15. 将varchar YYYYMMDD转换为datetime以与GETDATE()进行比较
- 16. 是否可以将多个分支与git中的一个进行比较?
- 17. 将一个表中数百万行与另一个表中数百万行进行比较的最快方法
- 18. 比较2 excel列,结果将与另一列进行比较
- 19. 将一个阵列与另一个阵列进行比较
- 20. Mysql varchar比较
- 21. 将字符串与另一个列表中的对象属性进行比较
- 22. 基于另一个表格行比较MySQL表中的值
- 23. 将数字添加到varchar并将结果与另一个varchar值进行比较
- 24. 将两个数据表与一个唯一的ID进行比较
- 25. json在python中与另一个json进行递归比较
- 26. 将字符串与多个表中的同一列进行比较mysql
- 27. 将一个列表与另一个列表进行比较并显示结果
- 28. 编写Java谓词以将列表与另一个进行比较
- 29. 可以将Matcher.group(n)与Java中的String进行比较?
- 30. 将NSStrings的NSArray与另一个NSSSray的NSStrings进行比较
'JOIN'只是'INNER JOIN'的缩写,因此没有区别。那么查询应该做什么?用户输入学生姓名和课程名称,并根据学生是否参加课程获得“是”或“否”。或者用户输入学生姓名并获得所有课程?还是别的什么?如果你想从两个表中选择数据,一个连接将是要走的路。但是,如果仅显示一个表中的数据,则带有exists子句的查询可能更合适。 –
用户输入学生姓名并获取所有课程 – uglyduck