UNION ALL和从2个表中选择的项目

时间:2015-01-01 18:50:37

标签: mysql sql union

我使用UNION ALL为2个表选择项目,似乎只选择第一个表项:

SELECT id_shk,
       shk_fname,
       shk_lname,
       shk_tran,
       country_code,
       nationality,
       shk_info,
       shk_title
FROM   sheikh_tbl
WHERE  ( quoran = "1"
          OR baramijaudio = "1"
          OR anachid = "1"
          OR douaedikr = "1"
          OR dorousse = "1" )
       AND ( shk_fname LIKE "%oyoun%"
              OR shk_mname LIKE "%oyoun%"
              OR shk_lname LIKE "%oyoun%" )
UNION ALL
SELECT wtitle,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL
FROM   wall
WHERE  wtitle LIKE "%oyoun%"
LIMIT
0, 5 

有关于此的任何建议吗?


我创建了一个测试表,这是我说的结果,第二个表的字段没有显示:

enter link description here

因此,如果我回复$ name,它将不会显示任何内容

这是在sqlfiddle中的测试:http://sqlfiddle.com/#!2/3a161/1/0

2 个答案:

答案 0 :(得分:1)

当您建立联合时,您将从所有子查询中获取行数据。但是一列只能有一个列名,因此union中列的名称取自第一个子查询。

如果您想更清楚,可以给出一个别名,表明它可以是列。

select id_shk AS id_shk_or_wtitle,
       shk_fname,
       shk_lname,
       shk_tran,
       country_code,
       nationality,
       shk_info,
       shk_title
FROM   sheikh_tbl
UNION
SELECT wtitle,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL
FROM   wall

答案 1 :(得分:0)

使用union,第一个select中的列名也用于其他select。 如果您需要知道表行的来源,请为每个选择添加一个pseodo列:

SELECT
     'table1' tablename,
     fieldx
FROM
     table1

UNION ALL

SELECT
     'table2',
     fieldy
FROM
     table2
相关问题