Mysql选择非链接表

时间:2013-09-03 12:57:47

标签: mysql

我有两个表,没有标准方式链接(我知道这不是一个很好的方法)

我们可以说这些表的设置如下所示

表: 的成分

字段: cid,cname,rangeid,company

表:范围

字段: 摆脱,范围名称,年份

虽然在关系数据库中这很简单,但我不太确定最干净的方法(重建数据库不是一种选择)。

我需要的基本查询是。

select * from component where range.year = '2014' and company = 'xxx'

任何建议都将不胜感激。

3 个答案:

答案 0 :(得分:1)

JOIN两个表:

select c.cname, r.rangename, r.year, ...
from component AS c
INNER JOIN ranges AS r ON c.rangeid = r.rid
where r.year = '2014' 
  and c.company = 'xxx';

请注意:您可以正常JOIN任何表,即使它们之间没有任何关系,只需将条件放在ON子句中,就像在你的情况下。但是,您必须确保正确设置索引,请参阅此页面以获取更多信息:

答案 1 :(得分:1)

您正在寻找

JOIN

select * 
from component 
inner join ranges on rid = rangeid and year = 2014
where company = 'xxx'

答案 2 :(得分:1)

这是你要找的吗?

SELECT a.cid, a.cname, a.rangeid, a.company, b.rid, b.rangename, b.year
FROM component a
JOIN ranges b ON
    b.rid = a.rangeid
WHERE b.year = 2014
    AND a.company = 'xxx'

<强>结果

| CID |     CNAME | RANGEID | COMPANY | RID | RANGENAME | YEAR |
------|-----------|---------|---------|-----|-----------|------|
|   1 | Component |       1 |     xxx |   1 |     Range | 2014 |

Demo

如果component中可能不存在ranges的范围,请使用LEFT JOIN