MySQL在哪里使用数组

时间:2014-03-29 22:18:28

标签: mysql sql arrays where-in

到目前为止,我已经搜索了一下,但还没找到我到底要找的东西。基本上我有一个MySQL数据库,有几个表(keywordscompanylink表)。我希望能够提供一系列关键字并找到相关公司。当我运行没有WHERE IN子句的第二个查询时,它可以工作。当我提供阵列时,它没有。

select  keywords.idkeywords into @keyId
from keywords where
keywords.keyword IN ('Entertainment', 'Public');

select distinct company.company_name
from keywords, keyword_to_company, company 
where keyword_to_company.keywordId = @keyId
  and keyword_to_company.compId = company.idcompany;

2 个答案:

答案 0 :(得分:2)

您的查询没有意义。首先,您尝试在@keyid中添加多个值,但您无法做到这一点。而且,MySQL没有表变量的概念。您可以使用临时表。

然后第二个查询更糟。这个查询对你有用吗?

select distinct c.company_name
from keywords k natural join
     keyword_to_company k2c natural join
     company c
where k.keyword IN ('Entertainment', 'Public') and
      k2c.compId = company.idcompany;

我只使用natural join,因为您没有指定join个密钥。通常,您应始终使用onusing指定要加入的列。

答案 1 :(得分:0)

...谢谢 您的查询无效..

然而,此查询确实有效。虽然@keyId返回多行,但查询成功并生成关联公司列表。我同意它不应该起作用,但确实如此。

从关键字中选择keywords.idkeywords到@keyId keywords.keyword ='娱乐' 和 keywords.keyword ='公开';

从关键字keyword_to_company,company中选择不同的company.company_name

keyword_to_company.keywordId = @keyId

和     keyword_to_company.compId = company.idcompany;