根据mysql中的条件从表中获取数据

时间:2016-07-11 10:42:59

标签: mysql

  

考虑我的情景,就像我有3张桌子一样   的表1,   的表2,    table3 我想根据某些条件从table2或table3中获取一些colums

喜欢

select tb1.*, 
if(tb1.status='true' then tb2.name else tb3.name) 
from table1 tb1, table2 tb2, table3 tb3
where tb1.aid=tb2.aid and tb1.aid=tb2.aid

简而言之,我希望根据条件

显示table2或table3中的某些列

3 个答案:

答案 0 :(得分:1)

您可以使用CASE EXPRESSION

SELECT tb1.*,
       CASE WHEN tb1.status = 'true' THEN tb2.name ELSE tb3.name END as `name`
FROM table1 tb1
INNER JOIN table2 tb2 
 ON(t1.aid = tb2.aid)
INNER JOIN table3 tb3
 ON(tb1.aid = tb3.aid)

或者按照您想要的IF()

SELECT tb1.*,
       IF(tb1.status='true' ,tb2.col1,tb3.col1) as col1,
       IF(tb1.status='true' ,tb2.col2,tb3.col2) as col2,
       IF(tb1.status='true' ,tb2.col3,tb3.col3) as col3
       .....

此外,尽量避免使用隐式连接语法(逗号分隔)并使用正确的连接语法,这将帮助您避免错误,例如您所做的错误(将两个条件与tb2进行比较而不是一到tb2,一到tb3

答案 1 :(得分:1)

SELECT
      tb1.*
    , CASE
            WHEN tb1.status = 'true' THEN tb2.name
            ELSE tb3.name
      END AS var_name
FROM table1 tb1
      INNER JOIN table2 tb2 ON tb1.aid = tb2.aid
      INNER JOIN table3 tb3 ON tb2.aid = tb3.aid

使用案例表达

但是,您还需要仔细研究如何加入表格。有两点需要注意:

  1. 停止使用以逗号分隔的表格列表,可以使用更精确的连接语法
  2. 您目前(在问题中)没有正确加入table3

答案 2 :(得分:1)

if(tb1.status ='true',tb2.name,tb3.name)as name