Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用单个mysql查询获取两个表的数据?_Mysql_Sql_Join - Fatal编程技术网

如何使用单个mysql查询获取两个表的数据?

如何使用单个mysql查询获取两个表的数据?,mysql,sql,join,Mysql,Sql,Join,以下是我的表格,学生id是两个表格中的公共字段。我想在一次查询中获取两个表的数据。同时获取学生的最新数据 table A: student_id name surname email ------------------------------------------------ 1 ABC LLL abc@gmail.com 2

以下是我的表格,学生id是两个表格中的公共字段。我想在一次查询中获取两个表的数据。同时获取学生的最新数据

 table A:

        student_id    name     surname        email
        ------------------------------------------------
              1       ABC       LLL       abc@gmail.com
              2       PQR       SSS       pqr@gmail.com


        Table B:

          student_id  Assignment_Id  Assignment_Name      last_submited   
         ---------------------------------------------------------------------
              2            1             asign_1            sub_0001
              1            2             asign_2            sub_0002 
              2            3             asign_2            sub_0003
我想要准确的输出,如:-

student_id   Assignment_Id         email      last_submited
--------------------------------------------------------------
    2             3               pqr@gmail.com      sub_0003
我使用了下面的查询来获取最近的记录,但不知道如何获取电子邮件id

SELECT assignment_id,
       student_id,
       last_submited
FROM tableB
WHERE student_id= '2'
ORDER BY assignment_id DESC LIMIT 1
将两个表连接起来

SELECT B.assignment_id,
       B.student_id,
       A.email_id ,
       B.last_submited
FROM tableB 'B',
            tableA 'A'
WHERE B.student_id= '2'
  AND A.student_id=B.student_id
ORDER BY assignment_id DESC LIMIT 1
将两个表连接起来

SELECT B.assignment_id,
       B.student_id,
       A.email_id ,
       B.last_submited
FROM tableB 'B',
            tableA 'A'
WHERE B.student_id= '2'
  AND A.student_id=B.student_id
ORDER BY assignment_id DESC LIMIT 1

您需要使用
join

SELECT a.student_id,
       b.Assignment_id,
       a.email,
       b.last_submitted
FROM a
INNER JOIN b ON a.student_id = b.student_id
WHERE a.student_id= '2'
ORDER BY b.assignment_id DESC LIMIT 1

您需要使用
join

SELECT a.student_id,
       b.Assignment_id,
       a.email,
       b.last_submitted
FROM a
INNER JOIN b ON a.student_id = b.student_id
WHERE a.student_id= '2'
ORDER BY b.assignment_id DESC LIMIT 1

您可以使用
JOIN

select  tableB.assignment_id, 
        tableB.student_id, 
        tableB.last_submited,
        tableA.email
from    tableB INNER JOIN
        tableA ON tableB.student_id = tableA.student_id
where   tableB.student_id= '2' 
order by tableB.assignment_id desc 
limit 1
内部联接
用于返回数据,其中数据位于两个表中(因此en条目将存在于表A和表B中)

当您希望从表A中检索所有数据以及表B中可用的值时,将使用
左联接

那么,假设你有

TABLEA
-------
1
2

会回来吗

1,1
1,1
2,NULL
鉴于

SELECT *
FROM TABLEA LEFT JOIN
TABLEB ON TABLEA.ID = TABLEB.ID
会回来吗

1,1
1,1
2,NULL

您可以使用
JOIN

select  tableB.assignment_id, 
        tableB.student_id, 
        tableB.last_submited,
        tableA.email
from    tableB INNER JOIN
        tableA ON tableB.student_id = tableA.student_id
where   tableB.student_id= '2' 
order by tableB.assignment_id desc 
limit 1
内部联接
用于返回数据,其中数据位于两个表中(因此en条目将存在于表A和表B中)

当您希望从表A中检索所有数据以及表B中可用的值时,将使用
左联接

那么,假设你有

TABLEA
-------
1
2

会回来吗

1,1
1,1
2,NULL
鉴于

SELECT *
FROM TABLEA LEFT JOIN
TABLEB ON TABLEA.ID = TABLEB.ID
会回来吗

1,1
1,1
2,NULL

mysql或sql server。。。不能同时是HmySQL或sql server。。。汉克斯·阿斯塔特对我很好,谢谢你解释得很好。谢谢阿斯塔特对我很好,谢谢你解释得很好