我有两个名为“user”和“logs”的表。
用户表的列名为“userID”,也是pk。
logs表有两列名为“log_detail”和“userID”。
我想要查询的是“从用户表中逐个获取所有user.userID值,并检查它们是否包含此值,如果它计算,则使用此userID值更新logs.userID”。
我尝试了一些查询,但我真的不知道该怎么做。
顺便说一句,我使用的是Mysql。
UPDATE logs
SET logs.userID = user.userID
SELECT userID
FROM logs
WHERE logs.userID LIKE concat("%",user.userID,"%");
答案 0 :(得分:1)
架构详细信息
create table user
(userid varchar(30));
create table logs
(log_detail varchar(100),
userid varchar(30));
insert into user values('user1');
insert into user values('user2');
insert into user values('user3');
insert into logs values('update by user1','user3');
insert into logs values('inserted by user2','user2');
insert into logs values('inserted by user3',null);
更新前的表格数据
| log_detail | userid |
|-------------------|--------|
| update by user1 | user3 |
| inserted by user2 | user2 |
| inserted by user3 | (null) |
更新查询
update logs join user
set logs.userid=user.userid
where logs.log_detail LIKE concat("%",user.userID,"%");
更新后的表格数据
| log_detail | userid |
|-------------------|--------|
| update by user1 | user1 |
| inserted by user2 | user2 |
| inserted by user3 | user3 |
答案 1 :(得分:0)
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt"
exclude-result-prefixes="msxsl"
version="2.0">
<xsl:variable name="templateMessage" select="document('MyXmldata.xml')" />
<xsl:variable name="inputData" select="/" />
<xsl:template match="/">
<html>
<body>
<xsl:variable name="firstName" select="$templateMessage/inputXml/firstName" />
<xsl:variable name="lastName" select="$templateMessage/inputXml/lastName" />
<xsl:variable name="StringValue" select="node()" />
<xsl:variable name="StringValue1" select="replace($StringValue,'\$firstName',$firstName)" />
<xsl:variable name="StringValue2" select="replace($StringValue1,'\$lastName',$lastName)" />
</body>
</html>
</xsl:template>
还要考虑到用户是mysql中的保留关键字
答案 2 :(得分:0)
尝试使用以下查询。我想你会得到你需要的东西。
update logs l
join users u
on l.log_detail = u.userid
set l.userid = u.userid
我认为我们不需要再次编写where条件,因为我们在查询中使用了内连接。
谢谢。
答案 3 :(得分:0)
我对MYSQL不太熟悉,但在oracle中,我们可以满足您的要求,例如
DrawView