簡體   English   中英

如何使用單個mysql查詢獲取兩個表數據?

[英]How to get two tables data using single mysql query?

以下是我的表格,學生證是兩個表格中的通用字段。 我想在單個查詢中獲取兩個表的數據,還獲取學生的最新數據。

 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

您可以使用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

INNER JOINs用於返回數據在兩個表中的數據(因此,entry將存在於tableA和tableB中)。

當您希望從表A中檢索所有數據以及表B中可用的那些值時,將使用LEFT JOINs聯接。

所以,假設您有

TABLEA
-------
1
2

TABLEB
-------
1

SELECT *
FROM TABLEA INNER JOIN
TABLEB ON TABLEA.ID = TABLEB.ID

會回來

1,1

SELECT *
FROM TABLEA LEFT JOIN
TABLEB ON TABLEA.ID = TABLEB.ID

會回來

1,1
2,NULL

加入兩個表,

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM