我在理解如何编写此MySQL查询时遇到了麻烦,在这里我能找到的很多答案似乎并没有太大帮助。
我有两个带有以下行的表:
units
-----------------
unit_id (INT)
unit_name(STRING)
surveys
-----------------
survey_id (INT)
parent_unit(INT)
我正在尝试向调查表中添加一条记录。在我的查询中,我知道unit_name
中的parent_unit
,但是我需要找出unit_id
是什么。
我已经有一段时间没有使用mysql了,所以我无法创建一个用相应的unit_name
替换unit_id
的INNER JOIN。
这是我到目前为止尝试过的方法,但是我认为我离答案还很远:
$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
由于“ parent_unit“ unit1”的unid_id
为0,我们可以在units表中看到:
> SELECT * FROM units WHERE unit_name LIKE "unit1";
unit_id | unit_name
--------+----------
0 | unit1
我希望我对自己的解释足以被理解。
答案 0 :(得分:1)
因此,从简单开始。首先,在给定单位名称的情况下从单位中查找单位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
完全是可选的,但可以使人更容易跟踪事物)
答案 1 :(得分:1)
根据您的解释,您似乎需要
基于unit_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