获取数据并从 MySQL 两个表中排序


Get data and sort from MySQL two tables

我有table_1table_2,它们是相同的结构,但数据不同。需要以某种create_date的方式从该表中获取所有数据,无论来自哪个表(它可以是 table_1 的 1 行,table_2 的 3 行,然后是 table_1 的 3 行)。可能吗?如何?或者大喊我得到两个查询,然后用 PHP 按日期排序?

编辑:对不起,第一部分,我以为我可以从那里做到,但似乎我不能:/

我有这样的大查询

SELECT 
    table_1.id, 
    table_1.created, 
    table_1.qty, 
    table_1.comments, 
    table_1.last_update, 
    table_7.firstname, 
    SUBSTRING(table_7.lastname, 1, 1) AS lastname, 
    table_8.title country, 
    table_3.value AS sim, 
    table_1.offer_request, 
    table_5.manufacturer AS manufacturer, 
    table_4.name AS model, 
    table_6.value AS specifications, 
    table_9.value as shipping, 
    table_1.model AS mid, 
    table_1.user_id, 
    table_1.callme, 
    table_1.phoneprice, 
    table_1.phoneprice_eur, 
    table_1.currency, 
    table_1.sel_buy_show_all, 
    table_1.seller_buyer
FROM (`table_1`)
LEFT JOIN `table_3` ON `table_3`.`id` = `table_1`.`sim`
LEFT JOIN `table_4` ON `table_4`.`id` = `table_1`.`model`
LEFT JOIN `table_5` ON `table_5`.`id` = `table_1`.`manufacturer`
LEFT JOIN `table_6` ON `table_6`.`id` = `table_1`.`specifications`
LEFT JOIN `table_7` ON `table_7`.`id` = `table_1`.`user_id`
LEFT JOIN `table_8` ON `table_7`.`country`=`table_8`.`id`
LEFT JOIN `table_9` ON `table_9`.`id` = `table_1`.`types`
WHERE `table_1`.`status` =  '1'
AND `table_1`.`deleted` =  '0'
ORDER BY `last_update` DESC
LIMIT 200

并且table_1哪种结构与table_2相同,我需要以某种方式将table_2插入到具有所有连接的查询中,例如table_1

如果我

答对了你的问题,你可以像这样使用联合 -

select * from table_1 union select * from table_2 order by create_date desc

编辑

创建这样的视图 -

create view table_1And2 as select * from table_1 union select * from table_2

table_1And2不是一个好名字,就给一个有意义的名字。

并像这样修改您的长查询 -

SELECT 
table_1And2.id, 
table_1And2.created, 
table_1And2.qty, 
table_1And2.comments, 
table_1And2.last_update, 
table_7.firstname, 
SUBSTRING(table_7.lastname, 1, 1) AS lastname, 
table_8.title country, 
table_3.value AS sim, 
table_1And2.offer_request, 
table_5.manufacturer AS manufacturer, 
table_4.name AS model, 
table_6.value AS specifications, 
table_9.value as shipping, 
table_1And2.model AS mid, 
table_1And2.user_id, 
table_1And2.callme, 
table_1And2.phoneprice, 
table_1And2.phoneprice_eur, 
table_1And2.currency, 
table_1And2.sel_buy_show_all, 
table_1And2.seller_buyer
FROM (`table_1And2`)
LEFT JOIN `table_3` ON `table_3`.`id` = `table_1And2`.`sim`
LEFT JOIN `table_4` ON `table_4`.`id` = `table_1And2`.`model`
LEFT JOIN `table_5` ON `table_5`.`id` = `table_1And2`.`manufacturer`
LEFT JOIN `table_6` ON `table_6`.`id` = `table_1And2`.`specifications`
LEFT JOIN `table_7` ON `table_7`.`id` = `table_1And2`.`user_id`
LEFT JOIN `table_8` ON `table_7`.`country`=`table_8`.`id`
LEFT JOIN `table_9` ON `table_9`.`id` = `table_1And2`.`types`
WHERE `table_1And2`.`status` =  '1'
AND `table_1And2`.`deleted` =  '0'
ORDER BY `last_update` DESC
LIMIT 200

我也看到@Rehban的答案对你来说是一个很好的答案,如果你不需要view,我会提出另一个解决方案:

SELECT 
mainTable.id, 
mainTable.created, 
mainTable.qty, 
mainTable.comments, 
mainTable.last_update, 
table_7.firstname, 
SUBSTRING(table_7.lastname, 1, 1) AS lastname, 
table_8.title country, 
table_3.value AS sim, 
mainTable.offer_request, 
table_5.manufacturer AS manufacturer, 
table_4.name AS model, 
table_6.value AS specifications, 
table_9.value as shipping, 
mainTable.model AS mid, 
mainTable.user_id, 
mainTable.callme, 
mainTable.phoneprice, 
mainTable.phoneprice_eur, 
mainTable.currency, 
mainTable.sel_buy_show_all, 
mainTable.seller_buyer
FROM (Select * From `table_1` union Select * From `table_2`) as mainTable
LEFT JOIN `table_3` ON `table_3`.`id` = `mainTable `.`sim`
LEFT JOIN `table_4` ON `table_4`.`id` = `mainTable `.`model`
LEFT JOIN `table_5` ON `table_5`.`id` = `mainTable `.`manufacturer`
LEFT JOIN `table_6` ON `table_6`.`id` = `mainTable `.`specifications`
LEFT JOIN `table_7` ON `table_7`.`id` = `mainTable `.`user_id`
LEFT JOIN `table_8` ON `table_7`.`country`=`table_8`.`id`
LEFT JOIN `table_9` ON `table_9`.`id` = `mainTable `.`types`
WHERE `mainTable `.`status` =  '1'
AND `mainTable `.`deleted` =  '0'
ORDER BY `last_update` DESC
LIMIT 200