2009-12-02 128 views
1

,如果我有表,如:联合MySQL查询

table_1: 1, 'Hello My Name is Hal', '2009:11:02 08:42' 
table_1: 2, 'Hello My Name is Dave', '2009:11:02 08:30' 
table_2: 1, 'Ima all #red due to twitter', '2009:11:02 09:42' 

并让想象所有的表列具有相同的col_names

有什么办法,我可以做一个查询到一个返回结果选择不同的行

东西线沿线的:

SELECT * FROM table_1, table_2 ORDER BY dateReg DESC 

所以我回报将是这样的:

1, 'Ima all #red due to twitter', '2009:11:02 09:42' 
1, 'Hello My Name is Hal', '2009:11:02 08:42' 
2, 'Hello My Name is Dave', '2009:11:02 08:30' 

当我尝试运行上面的查询,我得到歧义错误(显然... .. Duhh:d),但有什么办法,我们能做到这一点查询,而不是在排序使用PHP的代码。

任何想法?在此先感谢

+1

它实际上是被称为JOIN,一个“联合”是不同的东西:) – NDM

+0

我知道呢,所以我有什么JOIN来命名不同,因为我coudnt想想别的什么来称呼它,结果是它的一个联盟:D –

回答

3

可以使用UNION(或UNION ALL)到结果,从多个查询组合:

SELECT * FROM table_1 UNION ALL SELECT * FROM table_2 

(简单UNION将删除重复,UNION ALL将r E打开所有结果。)

+0

ty genious ....... 15个字符 –

0

使用表aliasas;)

喜欢的东西:

SELECT table1.id AS table1_id, table2.id AS table2_id, table3.id AS table3_id FROM table1, table2, table3

+1

这是一个交叉连接,这不是问题所在。 –

1

您可以使用UNION查询

0

使用最初的例子为基础,有没有办法在那里表2可以与表1相同的ID超载行?

所以预期的结果将是:

1, 'Ima all #red due to twitter', '2009:11:02 09:42' 
2, 'Hello My Name is Dave', '2009:11:02 08:30' 
+1

一个可能的解决方案是使用子选择 - SELECT * FROM((SELECT * FROM table_1)UNION(SELECT * FROM table_2))AS'result' GROUP BY'result' .'id' – cris