在同一查询中选择使用ID选择信息

时间:2014-02-03 14:38:58

标签: mysql

我有两张桌子,

professors:

professors

classes:

classes

我希望通过使用表示教授姓名的字符串来执行查询,然后从id匹配查询教授的id的类中选择行,但所有这些行都在一个查询中。如果不做两个查询,首先选择id然后选择类,我无法想出一个简单的方法。

示例:select * from classes where id = (select id from professors where name = "some professor name")

据我所知,这在语法上是不正确的,但希望它可以让您了解我想要的内容。

4 个答案:

答案 0 :(得分:2)

你想要一个INNER JOIN

SELECT c.* 
FROM classes c INNER JOIN professors p on c.id = p.id 
WHERE p.name='some professor name'

答案 1 :(得分:1)

您正在寻找JOIN

SELECT 
  c.* 
FROM 
  classes c 
JOIN 
  professors p ON c.professor = c.id 
WHERE 
  p.name = "some professor name"

答案 2 :(得分:1)

试试这个

SELECT *
FROM CLASSES C INNER JOIN PROFESSOR P ON
     C.professor = P.ID 
WHERE P.Name = 'professor name'

(OR)

   SELECT *
   FROM CLASSES,PROFESSOR 
   WHERE CLASSES.professor = PROFESSOR.ID AND
   PROFESSOR.Name = 'professor name' 

答案 3 :(得分:1)

你非常接近。

SELECT something, something
  FROM classes
 WHERE professor IN
        (  SELECT DISTINCT id 
            FROM professors
           WHERE name = 'name' 
        )

你缺少的技巧是IN ( )。这允许您构造一组要搜索的ID号。

你可以用

做得更好
   WHERE name LIKE 'name%'

如果你不完全确定教授的名字。

专业提示:避免SELECT *,而是提供您需要检索的列的列表。