INSERT + SELECT:根据IN结果插入X条目

时间:2012-02-24 15:00:19

标签: mysql select insert

首先,对于这个主题标题感到抱歉,我无法找到更具相关性的标题,所以如果您有更好的想法,请随时修改它。

我的情况是我有两个表,一个有很多列,包括一列Value,第二个表由三列组成:

mysql> describe s_attrib;
+-------------+-------------+------+
| Field       | Type        | Null |
+-------------+-------------+------+
| Login       | varchar(32) | NO   |
| Type        | enum        | NO   |
| Value       | varchar(64) | NO   |
+-------------+-------------+------+
3 rows in set (0.00 sec)

mysql> select * from s_attrib LIMIT 0,4;

+----------+-----------+---------+
|Login     | Type      | Value   |
+----------+-----------+---------+
| login_1  | exception | value_1 |
| login_1  | exception | value_2 |
| login_2  | exception | value_3 |
| login_3  | exception | value_4 |
+--------------------------------+

在此表中,值是唯一的。登录可以有许多值,但是值不能超过登录附加值。

我已经做了什么来检索我需要为s_attrib表中的特定Login插入的值:

mysql> SELECT DISTINCT Value FROM my_table WHERE SOME_BUSINESS_CONDITIONS_HERE;
+---------+
| Value   |
+---------+
| value_5 |
| value_6 |
| value_7 |
| value_8 |
+---------+

我知道我的s_attrib表格中没有这些值,因此在插入过程中不会有任何混淆。

我正在尝试做的事情,只需要一个MySQL请求就可以插入类似于以下内容的值:

INSERT INTO s_attrib (Login, type, value) VALUES ('MyLogin', 'except', 'value_5');
INSERT INTO s_attrib (Login, type, value) VALUES ('MyLogin', 'except', 'value_6');
INSERT INTO s_attrib (Login, type, value) VALUES ('MyLogin', 'except', 'value_7');
INSERT INTO s_attrib (Login, type, value) VALUES ('MyLogin', 'except', 'value_8');

有没有办法使用INSERT INTO ... SELECT进行单个查询?

1 个答案:

答案 0 :(得分:1)

INSERT INTO s_attrib
SELECT DISTINCT 
   'MyLogin' AS `Login`,
   'exception' AS `Type`,
   Value AS `Value`
FROM my_table 
WHERE SOME_BUSINESS_CONDITIONS_HERE;