Mysql 使用where子句连接表

Mysql 使用where子句连接表,mysql,Mysql,我有两张桌子,结构如下所示 表1 精神分裂症 名字 成本 类型 表2 精神分裂症 细节 旧成本 我无法编写一个查询来显示a或B类型的表2中的记录(这里您可以看到类型字段在表1中),这里需要补充的是schid不是主键,我正在执行的查询检索的记录比预期的多,我认为是由于join,我可以不使用join执行它吗这将有助于: SELECT * FROM Table1 JOIN Table2 ON Table1.schid=Table2.schid WHERE Table1.type='A' O

我有两张桌子,结构如下所示

表1

  • 精神分裂症
  • 名字
  • 成本
  • 类型
表2

  • 精神分裂症
  • 细节
  • 旧成本
我无法编写一个查询来显示a或B类型的表2中的记录(这里您可以看到类型字段在表1中),这里需要补充的是schid不是主键,我正在执行的查询检索的记录比预期的多,我认为是由于join,我可以不使用join执行它吗这将有助于:

SELECT *
FROM Table1
JOIN Table2 ON Table1.schid=Table2.schid
WHERE Table1.type='A'
  OR Table1.type='B'
SELECT t2.schid, t2.details, t2.oldcost
FROM Table2 t2
   JOIN Table1 t1
      ON t1.schid = t2.schid
WHERE t1.type IN ('A', 'B');

这应该只检索符合条件的表2记录

SELECT t2.*
FROM Table2 t2
JOIN Table1 t1 ON t1.schid = t2.schid
WHERE t1.type = 'A'
 OR t1.type = 'B';

我尝试了这个查询,它在某种程度上起作用,但存在一个问题,即schid不是主键,因此我检索的记录比预期的多,因为表2没有类型字段,所以需要使用表1中的类型字段。这两个表的唯一公共字段是schid。使用schid连接两个表是有意义的。由于SCID不是主键,因此如果没有关于预期结果的其他信息,就很难提出解决方案。如果您担心查询返回重复的记录,请在select语句中使用distinct关键字删除它们。不使用联接将导致笛卡尔积,即查询将返回比预期更多的记录。仅代码块并不能提供好的答案。请添加解释(为什么解决问题,错误在哪里等…)
SELECT t2.*
FROM `Table2` t2
JOIN `Table1` t1 ON t2.`schid`=t1.`schid`
WHERE t1.`type` IN ('A','B');