在我离开表B后,我无法弄清楚为什么表A返回空值。它应该是3个表但是现在,我只是让两个表工作。
Table A
IUEID DATE MONTH DATAA
4444 01 JAN 150
4444 02 JAN 98
4444 03 JAN 78
4444 04 JAN 55
TABLE B
IUEID DATE MONTH DATAB
4444 02 JAN CORN
4444 03 JAN GRAPES
SELECT *, TABLEB.DATAB
FROM TABLEA
LEFT JOIN TABLEB
ON TABLEB.IUEID = TABLEA.IUEID
AND TABLEB.DATE = TABLEA.DATE
GROUP BY TABLEA.DATE
OUTPUT:
IUEUD DATE DATAA DATAB
(empty) (empty) 150 (emtpy)
4444 02 98 CORN
4444 03 78 GRAPES
(empty) (empty) 55 (empty)
答案 0 :(得分:1)
这对所有记录都不起作用,因为并非表B中的所有记录都具有与表A中匹配的日期值,因此它没有任何内容可以加入。因此,它显示表A中的值,并使表B列为空。这是左连接的典型特征。如果要显示它们仅出现在两个表中的记录,则应使用内部连接。
查看使用不同的joins 来了解它们如何帮助您更好地理解。
答案 1 :(得分:0)
如果您在选择中指定查询应该从哪个表中提取,则应该按预期工作。
SELECT DISTINCT A.IUEUD, A.DATE, A.DATAA, B.DATAB
FROM TABLEA A
LEFT JOIN TABLEB B
ON TABLEB.IUEID = TABLEA.IUEID
AND TABLEB.DATE = TABLEA.DATE
答案 2 :(得分:0)
LEFT JOIN
将显示TABLEA中的所有值,然后将与TABLEB中的值匹配。如果TABLEB中没有相关数据,则显示为null。
与Juakali92一样,建议仅使用JOIN
。
答案 3 :(得分:0)
嗨感谢您分享您的想法...我能够通过添加..
来解决问题
Used Join and Inner Join (It removes the result that doesn't match Table B) Left Join displays the result but IUEID and DATE are empty so I add the following IFNULL
SELECT a.IUEID, a.DATE, b.DATAB
IFNULL(a.IUEID,'0') as IUEIDa,
IFNULL(a.DATE,'0') as DATEa,
FROM TABLEA
LEFT JOIN TABLEB
ON TABLEB.IUEID = TABLEA.IUEID
AND TABLEB.DATE = TABLEA.DATE
ORDER BY TABLEA.DATE
Thanks for all your help.