尝试使用where子句从两个不同的表中提取时出现Mysql查询错误

时间:2015-04-01 10:38:08

标签: php mysql

当我尝试从列数据匹配的两个不同表中提取数据时,我无法检索查询结果(b / w第一个表的列和第二个表的列)

我使用了以下两种方法:

 SELECT a.*, FROM `table1` a, `table2` b
 WHERE a.`synonyms` in (b.`synonyms`);

SELECT a.*, FROM `table1` a, `table2` b
WHERE a.`synonyms`=b.`synonyms`;

SELECT * FROM `table1` where `synonyms` in (SELECT `synonyms`from `table2`WHERE 1);

第一个查询显示错误:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM `table1` a, `table2` b  WHERE' at line 1

第二个查询运行很长时间,然后在结尾处显示除了以下内容: 显示您的查询。

我在这里犯了什么错误?

PS:tabel1和table都有同义词列(同义词的值在varchar中)。 table1中有大约300k个同义词(例如:基因名称)。 table2有大约5000个同义词,这些同义词也存在于table1中。我想从table1中提取那些包含额外信息的5000.

    SELECT * FROM `table1` where `synonyms` in ('synonym1','synonym2','synonym3','synonym4'); 

3 个答案:

答案 0 :(得分:0)

SELECT a.*, FROM更改为SELECT a.* FROM

答案 1 :(得分:0)

在第二个查询中,您应该定义WHERE ... ='something'。

正确的语法是WHERE column_name operator value;

在第一个查询中,您应该删除已经指向的逗号。

答案 2 :(得分:0)

更改

 SELECT a.*, FROM

SELECT a.* FROM

加上使用加入您的查询,如

SELECT a.* FROM `table1` a join `table2` b on (a.synonyms=b.synonyms);