2010-04-27 41 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

相關問題