将table1中的多个列与table2中的多个列连接,并附加条件MySql

时间:2017-01-20 22:37:22

标签: mysql greatest-n-per-group

table_1有唯一的ID记录和多列数据

table_2有多行涉及特定ID和多列。 table2中的一列是,例如,time_lapse。

我需要保存所有列的两个表,但只有table2中具有最高time_lapse值的行。

我是这样尝试的......

create table as new_table 
select table1.*, table2.* from 
table1 left join table2
on table1.id=table2.id
where time_lapse=
(select max(time_lapse) from table2
group by id);

......但它失败了。

对新手的任何建议?谢谢。

1 个答案:

答案 0 :(得分:0)

你很亲密。但是,您选择time_lapseidtime_lapse,然后您就像只选择了一个只有一个IN的记录一样。使用id并在子查询的选择列表中添加create table as new_table select table1.*, table2.* from table1 left join table2 on table1.id=table2.id where (table2.id, table2.time_lapse) in (select id, max(time_lapse) from table2 group by id);

WHERE

然后你在外部加入table2,但是在create table as new_table select t1.*, t2.* from table1 t1 left join table2 t2 on t1.id = t2.id and (t2.id, t2.time_lapse) in (select id, max(time_lapse) from table2 group by id); 子句中想要它的某些标准。这不起作用(因为外连接记录中的列为空)。

相同的查询对于真正的外部联接更漂亮:

-- git -> /usr/bin/git
-- asciidoc -> /usr/bin/asciidoc
-- xmlto -> /usr/bin/xmlto
-- gzip -> /bin/gzip
-- ldoc -> /usr/local/bin/ldoc
-- convert -> /usr/bin/convert
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.1") 
-- Found Lua: /usr/lib/x86_64-linux-gnu/liblua5.1.so;/usr/lib/x86_64-linux-gnu/libm.so (found version "5.1.5") 
-- Using version from git: v4.0-105-gbfb3534
-- Checking for module 'xcb>=1.6'
--   Found xcb, version 1.11.1
-- Checking for module 'glib-2.0'
--   Found glib-2.0, version 2.48.1
-- Checking for module 'gdk-pixbuf-2.0'
--   Found gdk-pixbuf-2.0, version 2.32.2
-- Checking for module 'cairo'
--   Found cairo, version 1.14.6
-- Checking for module 'x11'
--   Found x11, version 1.6.3
-- Checking for module 'xcb-cursor'
--   Found xcb-cursor, version 0.1.1
-- Checking for module 'xcb-randr'
--   Found xcb-randr, version 1.11.1
-- Checking for module 'xcb-xtest'
--   Found xcb-xtest, version 1.11.1
-- Checking for module 'xcb-xinerama'
--   Found xcb-xinerama, version 1.11.1
-- Checking for module 'xcb-shape'
--   Found xcb-shape, version 1.11.1
-- Checking for module 'xcb-util>=0.3.8'
--   Found xcb-util, version 0.4.0
-- Checking for module 'xcb-keysyms>=0.3.4'
--   Found xcb-keysyms, version 0.4.0
-- Checking for module 'xcb-icccm>=0.3.8'
--   Found xcb-icccm, version 0.4.1
-- Checking for module 'xcb-xkb'
--   Found xcb-xkb, version 1.11.1
-- Checking for module 'xkbcommon'
--   Found xkbcommon, version 0.5.0
-- Checking for module 'xkbcommon-x11'
--   Found xkbcommon-x11, version 0.5.0
-- Checking for module 'cairo-xcb'
--   Found cairo-xcb, version 1.14.6
-- Checking for module 'libstartup-notification-1.0>=0.10'
--   Found libstartup-notification-1.0, version 0.12
-- Checking for module 'xproto>=7.0.15'
--   Found xproto, version 7.0.28
-- Checking for module 'libxdg-basedir>=1.0.0'
--   Found libxdg-basedir, version 1.2.0
-- Checking for module 'xcb-xrm'
--   Found xcb-xrm, version 1.2
-- Checking for modules 'glib-2.0;gdk-pixbuf-2.0;cairo;x11;xcb-cursor;xcb-randr;xcb-xtest;xcb-xinerama;xcb-shape;xcb-util>=0.3.8;xcb-keysyms>=0.3.4;xcb-icccm>=0.3.8;xcb-xkb;xkbcommon;xkbcommon-x11;cairo-xcb;libstartup-notification-1.0>=0.10;xproto>=7.0.15;libxdg-basedir>=1.0.0;xcb-xrm'
--   Found glib-2.0, version 2.48.1
--   Found gdk-pixbuf-2.0, version 2.32.2
--   Found cairo, version 1.14.6
--   Found x11, version 1.6.3
--   Found xcb-cursor, version 0.1.1
--   Found xcb-randr, version 1.11.1
--   Found xcb-xtest, version 1.11.1
--   Found xcb-xinerama, version 1.11.1
--   Found xcb-shape, version 1.11.1
--   Found xcb-util, version 0.4.0
--   Found xcb-keysyms, version 0.4.0
--   Found xcb-icccm, version 0.4.1
--   Found xcb-xkb, version 1.11.1
--   Found xkbcommon, version 0.5.0
--   Found xkbcommon-x11, version 0.5.0
--   Found cairo-xcb, version 1.14.6
--   Found libstartup-notification-1.0, version 0.12
--   Found xproto, version 7.0.28
--   Found libxdg-basedir, version 1.2.0
--   Found xcb-xrm, version 1.2
-- Looking for backtrace_symbols
-- Looking for backtrace_symbols - found
-- checking for execinfo -- found
-- Looking for round
-- Looking for round - not found
-- Looking for round
-- Looking for round - found
-- checking for round -- in libm
-- Checking for module 'dbus-1'
--   Found dbus-1, version 1.10.6