簡體   English   中英

MYSQL:INSERT INTO,同時也在同一查詢中執行INNER JOIN

[英]MYSQL: INSERT INTO while also doing INNER JOIN in the same query

我在理解如何編寫此MySQL查詢方面遇到困難,在這里我能找到的很多答案似乎並沒有太大幫助。

我有兩個表,這些行:

units
-----------------
unit_id (INT)
unit_name(STRING)

surveys
-----------------
survey_id (INT)
parent_unit(INT)

我正在嘗試向調查表中添加一條記錄。 在我的查詢中,我知道unit_nameparent_unit但是我需要找出unit_id是什么。

我還沒有在一段時間與MySQL的工作,所以我有麻煩創建INNER JOIN將取代unit_name與相應unit_id

到目前為止,這是我嘗試過的方法,但是我認為我離答案很遠:

$unit_name = "unit1"

INSERT INTO surveys (parent_unit) 
SELECT * FROM units
INNER JOIN units ON $unit_name=units.unit_name
VALUES ("unit name") //This should be an INT

該查詢的結果將是:

survey_id | parent_unit
----------+------------
        0 |           0

由於unid_id為`parent_unit“UNIT1”是0,這是我們可以在單位表格中看到:

> SELECT * FROM units WHERE unit_name LIKE "unit1";

unit_id | unit_name
--------+----------
      0 |     unit1

我希望自己能向我解釋得足夠理解。

因此,從簡單開始。 首先,在給定單位名稱的情況下從單位中查找單位ID的查詢是什么? 作為基本查詢:

SELECT unit_id
FROM units
WHERE unit_name LIKE "the_unit_name_you_have"

因此,接下來我們看您實際想要做什么:您需要建立調查記錄,並且擁有單位名稱。 與其對每個可能的單元進行全表聯接,不如讓它重復精確的選擇,然后將其放入表中:

INSERT INTO surveys (parent_unit)
SELECT unit_id AS parent_unit
FROM units
WHERE unit_name LIKE "the_unit_name_you_have"

(還請注意, AS完全是可選的,但可以使人更容易跟蹤事物)

根據您的解釋,您似乎需要
根據unit_id和parent_id之間的關系,將單元中的“單元名稱”與會話中的parent_id之間的連接

INSERT INTO surveys (parent_unit) 
SELECT unit_id 
FROM units u
INNER JOIN surveys  s ON u.unit_name = 'unit name' 
    and u.id = s.parent_unit

暫無
暫無

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

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