mysql显示多个表中的不同列

mysql显示多个表中的不同列,mysql,Mysql,考虑下表和值..我需要显示表“TAG”中的所有列及其值,以及另一个名为“ITEM”的表中的单列值 表名“标记” 表名称“项” 预期产量 TAGID NAME RATE ITEM_QTY 1 A 100 48 - (VALUE OF LAST INSERTED RECORD) 2 B 200 74 3 C 300 99 4 D 8099 0 5 E 400 0 6 F 500 0 7 G 600 0 8 H 7

考虑下表和值..我需要显示表“TAG”中的所有列及其值,以及另一个名为“ITEM”的表中的单列值

表名“标记”

表名称“项”

预期产量

TAGID   NAME    RATE    ITEM_QTY
1   A   100 48  - (VALUE OF LAST INSERTED RECORD)
2   B   200 74
3   C   300 99
4   D   8099    0
5   E   400 0
6   F   500 0
7   G   600 0
8   H   700 0
9   I   200 61
10  J   400 0
我试过一些怪癖,但都是些怪癖

这是我的疑问

select *
  from tag t1
  join ( select item_qty
           from item t2
          join tag t1
    on t1.name=t2.name;
谁能帮我解决这个问题

提前谢谢…

像这样试试

select tag.id,tag.name,rate,qty from tag join 
 (select qty,name from
ITEM where ITEM.id in 
(select max(id) from ITEM group by name)) as tt on tt.name=tag.name
你可以试试看

select
t.tagid,
t.name,
t.rate,
i.item_qty
from tag t
join
(
  select name,max(item_qty) as item_qty
  from item group by name

)i
on i.name = t.name

如果您需要项目表中的所有数据,如您在输出中所示,您可以使用左连接而不是内部连接

select
t.tagid,
t.name,
t.rate,
coalesce(i.item_qty,0) as item_qty 
from tag t
left join
(
  select name,max(item_qty) as item_qty
  from item group by name

)i
on i.name = t.name

假设上次插入的记录在项目表中具有最高的ID,则首先需要获得每个项目名称的最高ID

SELECT
Name, MAX(ITEMID) AS max_id
FROM 
item
GROUP BY Name;
通过这个查询(在下面的查询中作为子查询执行),我们得到每个max\u id对应的行

SELECT i.*
FROM item i
JOIN (
    SELECT
    MAX(ITEMID) AS max_id
    FROM 
    item
    GROUP BY Name
) si ON i.ITEMID = si.max_id;
下面是有关如何获取的更多示例

最终查询为

SELECT TAGID, tag.NAME, RATE, COALESCE(ITEM_QTY, 0) AS ITEM_QTY
FROM
tag
LEFT JOIN (
    SELECT i.*
    FROM item i
    JOIN (
        SELECT
        MAX(ITEMID) AS max_id
        FROM 
        item
        GROUP BY Name
    ) si ON i.ITEMID = si.max_id
) items ON tag.Name = items.Name
  • 现场观看它的工作
SELECT i.*
FROM item i
JOIN (
    SELECT
    MAX(ITEMID) AS max_id
    FROM 
    item
    GROUP BY Name
) si ON i.ITEMID = si.max_id;
SELECT TAGID, tag.NAME, RATE, COALESCE(ITEM_QTY, 0) AS ITEM_QTY
FROM
tag
LEFT JOIN (
    SELECT i.*
    FROM item i
    JOIN (
        SELECT
        MAX(ITEMID) AS max_id
        FROM 
        item
        GROUP BY Name
    ) si ON i.ITEMID = si.max_id
) items ON tag.Name = items.Name