MySQL - LEFT JOIN有两个字段

时间:2015-09-21 14:50:58

标签: mysql left-join

我有两张桌子:

  • invoices
  • discount_vouchers

我是invoice表,有两个领域:

  • voucher_id
  • author_voucher_ids

voucher_id是discount_vouchers表的直接ID。

author_voucher_ids是来自discount_vouchers表的以逗号分隔的ID列表。

是否可以LEFT JOIN这两个字段的发票和discount_vouchers表?

我尝试过:

LEFT JOIN discount_vouchers ON invoices.discount_voucher_id = discount_vouchers.id OR discount_vouchers.id IN (author_voucher_ids)

但这非常缓慢,我需要杀死这个过程。

我知道桌面发票是以错误的方式设计的,但我正在寻找解决方案而无需触及现有的表格结构。

谢谢。

1 个答案:

答案 0 :(得分:2)

您可以使用FIND_IN_SET MySQL函数:

LEFT JOIN discount_vouchers ON invoices.discount_voucher_id = discount_vouchers.id
OR FIND_IN_SET(discount_vouchers.id, author_voucher_ids) <> 0