选择后的MySQL联合[重复]
Posted
技术标签:
【中文标题】选择后的MySQL联合[重复]【英文标题】:MySQL Union After Select [duplicate] 【发布时间】:2021-12-08 13:01:19 【问题描述】:在 mysql 中通过SELECT
语句创建临时表后,有什么方法可以将行插入到临时表中?
我有这个按预期工作的查询:
SELECT goldusers_user_ci.user_id, goldusers_users.username, goldusers_user_ci.contact_value
FROM goldusers_users
INNER JOIN goldusers_user_ci
ON goldusers_users.id = goldusers_user_ci.user_id
ORDER BY user_id
这个想法是选择这个查询作为一个临时表并添加一行,如下所示:
SELECT * FROM(
SELECT goldusers_user_ci.user_id, goldusers_users.username, goldusers_user_ci.contact_value
FROM goldusers_users
INNER JOIN goldusers_user_ci
ON goldusers_users.id = goldusers_user_ci.user_id
ORDER BY user_id
) AS DBusers
INSERT INTO DBusers(user_id,username)
VALUES(-1,"All")
但是,我收到语法错误。有没有办法做到这一点?
**编辑:
我相信我实际上需要在选择后进行联合:
***问题是ORDER BY
语句的位置。将其移至底部有效
SELECT goldusers_user_ci.user_id, goldusers_users.username, goldusers_user_ci.contact_value
FROM goldusers_users
INNER JOIN goldusers_user_ci
ON goldusers_users.id = goldusers_user_ci.user_id
UNION ALL
SELECT -1 as user_id, "All" as username, "" as contact_value
ORDER BY user_id
【问题讨论】:
语法是INSERT INTO tablename (columns...) SELECT ....
查看INSERT
的文档
AS DBusers
不会创建临时表。
@Barmar 是的,也许我不需要临时表。我希望在 select 语句之后向查询中添加一行。
然后使用UNION
。
【参考方案1】:
我无法测试您想要什么,但根据您的查询,我认为您想在选择数据后插入数据。
SELECT * FROM(
SELECT goldusers_user_ci.user_id, goldusers_users.username, goldusers_user_ci.contact_value
FROM goldusers_users
INNER JOIN goldusers_user_ci
ON goldusers_users.id = goldusers_user_ci.user_id
ORDER BY user_id
) AS DBusers;
INSERT INTO DBusers(user_id,username)
VALUES(-1,"All");
我觉得你只需要加分号;
【讨论】:
上面的第一个查询没有分号,但是在第二个查询中添加分号并不能解决问题。 @marksy95 需要分号来显示第一个查询的结束位置和第二个查询的开始位置。【参考方案2】:这样的事情怎么样?
SELECT *
INTO #TempTable
FROM(
SELECT goldusers_user_ci.user_id, goldusers_users.username, goldusers_user_ci.contact_value
FROM goldusers_users
INNER JOIN goldusers_user_ci
ON goldusers_users.id = goldusers_user_ci.user_id
UNION ALL
SELECT -1, 'All', ''
) AS DBusers
SELECT *
FROM #TempTable
DROP TABLE #TempTable
【讨论】:
MySQL 不在临时表名前使用#
。
是的,我的错。首先创建一个表,将#TempTable替换为该表。
MySQL 在INSERT INTO
语句中不使用FROM
。
您似乎在给出 SQL-Server 的答案。以上是关于选择后的MySQL联合[重复]的主要内容,如果未能解决你的问题,请参考以下文章