MySQL Left Join 使用 key1 或 key2

标签 mysql

我希望能够使用多个键连接两个表。以下是可能的吗?

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

这是我正在做的事情的简化版本。在重要的情况下使用 MySQL 5.1.36。

更新:我希望使用 item_id 或 order_id 合并所有问题。所以每个项目可能有多个问题。我依稀记得一些关于 group by 的事情,但我一直想不出如何将多个记录连接到一个记录。

如果能得到像这样的东西就好了:

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 结果的一部分

最佳答案

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

关于MySQL Left Join 使用 key1 或 key2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2720946/

相关文章:

mysql:从表中选择 * 但在特定列中具有唯一值

python - Pandas 遍历数据框中的列以获取自定义 MySQL 插入字符串

MySQL 替换连字符后的数字

mysql更新嵌套一个字段

MySQL根据字符串的一部分替换整个字符串?

mysql - 如果第一个表中尚不存在给定值,则 SQL 触发器 : Inserting a row in a table after an insert on another table,

mysql - 如果触发器和 View 的字符集与数据库的其余部分不匹配,会有什么后果?

mysql - WordPress 数据库错误 The table is full for query UPDATE

MySQL:如何用这一记录之前的值更新字段

mysql - 将列类型从 INT 更改为 SMALLINT 和 TINYINT 后,MyISAM 表中的空间增加