2017-08-28 100 views
-1

实际上我有两个表,即表1和表2。我需要显示来自两个表的数据。如果我使用在MySQL中一次又一次显示表数据?

SELECT * FROM table 1 UNION SELECT * FROM table 2 

现在我随机从两个表

获取数据,但我需要后显示表2的数据首先显示table1的数据

+0

请编辑澄清到你的问题,不评论。但是,在你的评论中你不想说什么 - 请写出更长的句子。请阅读并在[mcve]上采取行动。 PS您必须为该表添加一列到每个union all,按第二个select中的该列排序(适用于联合),然后选择原始列。此外,这肯定是一个常见问题,请谷歌许多清晰,简洁,具体的声明你的问题和阅读许多命中之前张贴。 – philipxy

+0

[SQL Server UNION - 什么是默认的ORDER BY行为](https://stackoverflow.com/questions/421049/sql-server-union-what-is-the-default-order-by-behaviour)可能的重复 – philipxy

回答

1

在实践中,这将做你想做的(假设表具有相同的列):

SELECT * FROM table1 
UNION ALL 
SELECT * FROM table2; 

它实际上是更安全的使用显式order by

SELECT . . . 
FROM (SELECT t1.*, 1 as which FROM table1 t1 
     UNION ALL 
     SELECT t2.*, 2 as which FROM table2 t2 
    ) t 
ORDER BY which; 

SQL表格代表无序集合。没有ANSI要求UNION ALL在第二个子查询之前从第一个子查询返回值。在实践中,这在MySQL中起作用。

1

一种方法可能是在两个查询中添加一列,这表明它来自何处。

SELECT 
* 
FROM 
(
    SELECT *,'T1' AS source FROM table1 
    UNION 
    SELECT *,'T2' FROM table2 
) AS t 
ORDER BY t.source ASC; 

See Demo

+0

其工作,但对我的要求不起作用。 –

+0

选择job_id,company_name,job_description,job_location,job_title,maxAnnual_ctc,max_exp_required,minAnnual_ctc,min_exp_required,mandatory_skill1,mandatory_skill2,mandatory_skill3,TQT,suggest_tqt1,suggest_tqt2,suggest_tqt3,作为jobpost_url为空,空作为来源,来自jobs_posted的added_date –

+0

UNION选择job_id,company_name,job_description,job_location,job_title,Null为maxAnnual_ctc,Null为max_exp_required,Null为minAnnual_ctc,Null为min_exp_required,mandatory_skill1,Null为mandatory_skill2,Null为mandatory_skill3,Null为TQT,Null为Null as suggest_tqt1,Null as suggest_tqt2,Null as suggest_tqt3,jobpost_url,source,creted_data_time as added_date FROM indee d_jobcrawl ORDER BY added_date desc LIMIT 10 –