需要帮助构建MySQL查询 - 动态数据

时间:2014-09-02 23:12:37

标签: mysql sql

我们有一个遗留表Prop,根据value的符号,它会告诉您是否引用PropLongPropShort表。要明确Prop.value > 0是否PropShort其他PropLong

现在我想基于最终值构建动态查询。我不知道该怎么做。我已经有了一个查询(随意评论这个),它会将最终值拉回(str_value但我不知道如何修改它以便我可以进一步扩展我的查询{{1 }}

str_value

现在SELECT *, IFNULL(PropShort.str, PropLong.str) AS str_value FROM Prop LEFT JOIN PropShort ON sid=Prop.value LEFT JOIN PropLong ON lid=-Prop.value 在哪里?我特别关注OR'ing多个查询(即WHERE PropShort.str=%s OR PropLong.str=%s

表定义

WHERE PropShort.str=%s OR PropLong.str=%s OR behavior="foo"

1 个答案:

答案 0 :(得分:1)

这取决于......但可能

SELECT *, 
      IFNULL(PropShort.str, PropLong.str) AS str_value 
   FROM 
      Prop 
         LEFT JOIN PropShort 
            ON sid=Prop.value 
            AND PropShort.str=%s 
         LEFT JOIN PropLong 
            ON lid=-Prop.value
           AND PropLong.str=%s

现在这仍然会使您的“Prop”表成为主要表,但只会根据各自的条件加入相应的其他表。所以你可以通过ID获得一个PropShort,但是不匹配.str,但是有一个有效的PropLONG匹配ID并且有正确的.str来获得你想要的东西。