【问题标题】:join another table with if statement用 if 语句连接另一个表
【发布时间】:2014-03-08 06:07:57
【问题描述】:

如果当前表的field 等于某个特定值,我想加入另一个表。
例如:(这不是mysql语法)

SELECT * FROM `products` ( IF products.is_package IS NOT NULL THEN INNER JOIN `packages` )  

餐桌产品:

 +----+-----------+
 | id | is_package|
 +----+-----------+
 | 1  |   1       | // which joins package with id 1
 +----+-----------+
 | 2  | NULL      |
 +----+-----------+
 | 3  |   2       | // which joins package with id 2
 +----+-----------+

在mysql中可以做到这一点吗?

【问题讨论】:

  • 这不就是一个左连接吗?
  • 是吗?我是 sql 语言的新手
  • 只是左连接
  • 我想在这两种情况下都有数据,无论 is_package 是 null 还是 id。左连接是否适用于此目的?
  • 如果您事先知道所有ENUM 和相应的外键,那么您将全部加入它们,但使用CASE WHEN 构造准确检索您需要的内容。它仍然是一堆LEFT JOINs。它不会很漂亮,但应该是可行的。

标签: mysql sql join conditional-statements


【解决方案1】:

你的 if 条件你可以把它放在 WHERE 子句中。试试这个

  SELECT * FROM `products` LEFT JOIN `packages` 
  ON your_clause_here

【讨论】:

  • 我想在这两种情况下都有数据,无论 is_package 是 null 还是 id。左连接是否适用于此目的?
  • 如果 is_package 包含 ENUM 值会怎样。 foreach ENUM ,加入一个特定的表。我该怎么做
  • @Pars - 我在您的主要帖子下的评论中解决了 ENUM 的情况。
【解决方案2】:
 SELECT * FROM `products` LEFT JOIN `packages` 
  ON products.is_package = packages.id

【讨论】:

    猜你喜欢
    • 2019-05-05
    • 2022-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-17
    • 2017-08-23
    • 1970-01-01
    相关资源
    最近更新 更多