2010-04-27 33 views
1

我希望能够使用多个键连接两个表。以下可能吗?MySQL左连接使用key1或key2

SELECT * FROM items LEFT JOIN issues USING (item_id OR order_id) 

这是我正在做的简化版本。使用MySQL 5.1.36以防万一。

更新:我想要使用item_id或order_id加入的所有问题。所以每个项目可能有多个问题。我依稀记得关于小组的一些事情,但我从来不知道如何将多个记录加入到一个。

将是很好的得到的东西看起来是这样的:

array { 
    item_id => 1, 
    item_name => 'test item', 
    issues => array { 
    [0] => array { issue_id => 1, issue_type => 'test issue'}, 
    [1] => array { issue_id => 2, issue_type => 'test issue'} 
    } 
} 

希望这是有道理的。基本上,对这些问题的数组作为MySQL的结果的一部分

+0

你期望什么语义? – 2010-04-27 12:05:13

回答

2

USING子句中使用的列的列表应该用逗号分隔:

SELECT * 
FROM items 
LEFT JOIN issues 
USING (item_id, order_id) 

它与

SELECT * 
FROM items 
LEFT JOIN issues 
ON tab1.item_id = tab2.item_id AND tab1.order_id = tab2.order_id 

如果你想匹配两列中的任何一列平等可以使用OR而不是AND

SELECT * 
FROM items 
LEFT JOIN issues 
ON tab1.item_id = tab2.item_id OR tab1.order_id = tab2.order_id 
1

我会用一个联合:

select * from items left join issues using (item_id) 
union all 
select * from items left join issues using (order_id) 
+0

使用union而不是使用'OR'语句的连接的优点是什么? – con 2015-10-05 14:56:24

相关问题