3我只是想知道这种类型的查询是否可能。如果是这样,将不胜感激。

    SELECT

        field1,
        field2,
        field3

    FROM maintable

    WHERE maintable.field1 = passed_in_parameter


    IF (maintable.field2 = 1) THEN
            //do anything like joins
        INNER JOIN widgettable on widgettable.widgetid = field3

    ELSEIF (maintable.field2 = 2) THEN
            //do anything like joins
        INNER JOIN gizmottable on gizmottable.gizmoid = field3

    END IF

我希望我正在尝试做的事情是有道理的。
总之,我需要根据原始选择中的字段值连接不同的表。

最佳答案

正如 zerkms 所建议的那样,您可以将它们都放在外边。请查看以下是否有效

select mt.field1,
    mt.field2,
    mt.field3,
    CASE mt.field2 WHEN 1 THEN wt.widgetname WHEN 2 THEN gt.gizmoname END AS name
from maintable mt
  left join widgettable wt
    on wt.widgetid = mt.field3
  left join gizmotable gt
    on gt.gizmoid = mt.field3
where mt.field1 = 'param'
   and ((mt.field2 = 1 and wt.widgetid is not null)
       or (mt.field2 = 2 and gt.gizmoid is not null))

关于MYSQL SQL 语句。这个条件查询可能吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10038914/

10-13 07:20