blackwhite 发表于 2005-10-21 00:19:01

请教个简单的mysql的语法问题

书上的例子。有两个表student, absence,通过student_id联系在一起。
student table:

mysql> SELECT * FROM student;
+-----------+-----+------------+
| name      | sex | student_id |
+-----------+-----+------------+
| Megan   | F   |          1 |
| Joseph    | M   |          2 |
| Kyle      | M   |          3 |
| Katie   | F   |          4 |
| Abby      | F   |          5 |
| Nathan    | M   |          6 |
| Liesl   | F   |          7 |
| Ian       | M   |          8 |
| Colin   | M   |          9 |
.....

absence table

+------------+------------+
| student_id | date       |
+------------+------------+
|          3 | 2004-09-03 |
|          5 | 2004-09-03 |
|         10 | 2004-09-06 |
|         10 | 2004-09-09 |
|         17 | 2004-09-07 |
|         20 | 2004-09-07 |
+------------+------------+

SELECT * FROM student;和SELECT student_id FROM absence;都是可以正常执行的。但是

SELECT * FROM student WHERE student_id IN (SELECT student_id FROM absence);
这个语句的作用是把student含有absence中有的student_id的记录给显示出来。在mysql里边说是有IN的语法错误?错在什么地方?
如果用下面的语句,就可以。

SELECT * FROM student WHERE student_id IN ('1','2','3')

整个书上IN的语法,都是这么用。大家告诉我这个语法错在什么地方?

涩兔子 发表于 2005-10-21 13:45:32

MySQL4.1.x才开始支持不完整的嵌套子查询

你可以选择使用PostgreSQL :mrgreen:

jiangtao9999 发表于 2005-10-21 19:43:46

不要用嵌套,你可以
SELECT * FROM student,absence WHERE student.student_id = absence.student_id ;

blackwhite 发表于 2005-10-21 22:16:51

谢谢。我回头看看,那个书上说的myql是用的那个版本。

jiangtao9999 发表于 2005-10-22 17:15:22

中国的计算机教材都是针对两年前的软件所写的…………
针对新软件的基本上都是随软件的文档的中文翻译。

涩兔子 发表于 2005-10-23 13:59:40

中国的计算机教材都是针对两年前的软件所写的…………
针对新软件的基本上都是随软件的文档的中文翻译。

翻译的时候保证质量就好了 :mrgreen:

jiangtao9999 发表于 2005-10-23 14:02:47

:roll:
会么?

涩兔子 发表于 2005-10-23 14:06:51

就是说嘛 :mrgreen:

http://lib.verycd.com/2005/10/08/0000068700.html

VeryCD上一哥们儿贡献了好多原版Linux书籍,都是很不错的哦
页: [1]
查看完整版本: 请教个简单的mysql的语法问题