MySQL - 基于 SELECT 查询的 UPDATE 查询
我需要检查(从同一张表)两个事件之间是否存在基于日期时间的关联。
一组数据将包含某些事件的结束日期-时间,另一组数据将包含其他事件的开始日期-时间。
如果第一个事件在第二个事件之前完成,那么我想将它们链接起来。
到目前为止我所拥有的是:
SELECT name as name_A, date-time as end_DTS, id as id_A
FROM tableA WHERE criteria = 1
SELECT name as name_B, date-time as start_DTS, id as id_B
FROM tableA WHERE criteria = 2
然后我加入他们:
SELECT name_A, name_B, id_A, id_B,
if(start_DTS > end_DTS,'VALID','') as validation_check
FROM tableA
LEFT JOIN tableB ON name_A = name_B
然后我可以根据我的validation_check字段,使用嵌套的SELECT运行UPDATE查询吗?
I need to check (from the same table) if there is an association between two events based on date-time.
One set of data will contain the ending date-time of certain events and the other set of data will contain the starting date-time for other events.
If the first event completes before the second event then I would like to link them up.
What I have so far is:
SELECT name as name_A, date-time as end_DTS, id as id_A
FROM tableA WHERE criteria = 1
SELECT name as name_B, date-time as start_DTS, id as id_B
FROM tableA WHERE criteria = 2
Then I join them:
SELECT name_A, name_B, id_A, id_B,
if(start_DTS > end_DTS,'VALID','') as validation_check
FROM tableA
LEFT JOIN tableB ON name_A = name_B
Can I then, based on my validation_check field, run a UPDATE query with the SELECT nested?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(12)
实际上,您可以通过以下两种方式之一执行此操作:
MySQL 更新连接语法:
ANSI SQL 语法:
选择您认为最自然的一种。
You can actually do this one of two ways:
MySQL update join syntax:
ANSI SQL syntax:
Pick whichever one seems most natural to you.
希望这对你有用。
Hope this works for you.
在 MySQL 中很容易:
Easy in MySQL:
您可以使用内部联接更新另一个表中的值,如下
所示 按照此处了解如何使用此查询 http://www.voidtricks.com/mysql-inner-join-update/
或者您可以使用 select 作为子查询来执行此
查询,详细说明如下http://www.voidtricks.com/mysql-update-from-select/
You can update values from another table using inner join like this
Follow here to know how to use this query http://www.voidtricks.com/mysql-inner-join-update/
or you can use select as subquery to do this
query explained in details here http://www.voidtricks.com/mysql-update-from-select/
如果有人寻求将数据从一个数据库更新到另一个数据库,无论他们针对哪个表,都必须有一些标准来执行此操作。
这个对于所有级别来说都更好、更干净:
Traaa! 效果很好!
有了上述理解,您就可以修改设置的字段和“on”条件来完成您的工作。 您还可以执行检查,然后将数据拉入临时表,然后使用上述语法替换表和列名称来运行更新。
希望它有效,如果不行请告诉我。 我将为您写一个精确的查询。
If somebody is seeking to update data from one database to another no matter which table they are targeting, there must be some criteria to do it.
This one is better and clean for all levels:
Traaa! It works great!
With the above understanding, you can modify the set fields and "on" criteria to do your work. You can also perform the checks, then pull the data into the temp table(s) and then run the update using the above syntax replacing your table and column names.
Hope it works, if not let me know. I will write an exact query for you.
希望这在您必须在两个表之间进行匹配和更新的情况下对您有所帮助。
Hope this will help you in a case where you have to match and update between two tables.
我在寻找自己的非常复杂的连接解决方案时发现了这个问题。 这是问题的更复杂版本的替代解决方案,我认为这可能有用。
我需要填充活动表中的product_id 字段,其中活动以单位编号,单位以级别编号(使用字符串??N 标识),以便可以使用 SKU(即 L1U1A1)识别活动。 然后,这些 SKU 存储在不同的表中。
我确定了以下内容来获取 Activity_id 与 Product_id 的列表:-
我发现这太复杂,无法合并到 mysql 中的 SELECT 中,因此我创建了一个临时表,并将其与更新语句连接起来:-
我希望有人找到这个有用
I found this question in looking for my own solution to a very complex join. This is an alternative solution, to a more complex version of the problem, which I thought might be useful.
I needed to populate the product_id field in the activities table, where activities are numbered in a unit, and units are numbered in a level (identified using a string ??N), such that one can identify activities using an SKU ie L1U1A1. Those SKUs are then stored in a different table.
I identified the following to get a list of activity_id vs product_id:-
I found that that was too complex to incorporate into a SELECT within mysql, so I created a temporary table, and joined that with the update statement:-
I hope someone finds this useful
对于同一张表,
For same table,
您可以使用:
You can use:
我遇到了一个表本身重复条目的问题。 以下是对我有用的方法。 @sibaz 也提倡这样做。
最后我使用以下查询解决了这个问题:
选择查询保存在临时表中
临时表连接到更新查询中。
我对 SQL 不太有经验,请告知您知道的更好的方法。
以上查询是针对 MySql 服务器的。
I had an issue with duplicate entries in one table itself. Below is the approaches were working for me. It has also been advocated by @sibaz.
Finally I solved it using the below queries:
The select query is saved in a temp table
The temp table is joined in the update query.
I not very experienced with SQL please advise any better approach you know.
Above queries are for MySql server.
如果您要从复杂的查询中进行更新。 最好的办法是从查询创建临时表,然后使用临时表作为一个查询进行更新。
if you are updating from a complex query. The best thing is create temporary table from the query, then use the temporary table to update as one query.