我需要检查(从同一个表中)两个事件之间是否存在基于日期-时间的关联。
一组数据将包含某些事件的结束日期-时间,另一组数据将包含其他事件的开始日期-时间。
如果第一个事件在第二个事件之前完成,那么我想把它们联系起来。
到目前为止,我有:
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查询吗?
我在寻找一个非常复杂的连接的解决方案时发现了这个问题。这是另一种解决方案,一个更复杂的问题,我认为可能有用。
我需要填充活动表中的product_id字段,其中活动以单位编号,单位以级别编号(使用字符串??N标识),这样就可以使用SKU(即L1U1A1)标识活动。然后将这些sku存储在另一个表中。
我确定了以下内容以获得activity_id与product_id的列表:-
SELECT a.activity_id, w.product_id
FROM activities a
JOIN units USING(unit_id)
JOIN product_types USING(product_type_id)
JOIN web_products w
ON sku=CONCAT('L',SUBSTR(product_type_code,3), 'U',unit_index, 'A',activity_index)
我发现这是太复杂,以纳入一个SELECT在mysql,所以我创建了一个临时表,并加入了更新语句:-
CREATE TEMPORARY TABLE activity_product_ids AS (<the above select statement>);
UPDATE activities a
JOIN activity_product_ids b
ON a.activity_id=b.activity_id
SET a.product_id=b.product_id;
我希望有人觉得这有用
如果有人试图将数据从一个数据库更新到另一个数据库,而不管他们的目标是哪个表,那么必须有一些标准来做到这一点。
这个对所有关卡来说都更好更干净:
UPDATE dbname1.content targetTable
LEFT JOIN dbname2.someothertable sourceTable ON
targetTable.compare_field= sourceTable.compare_field
SET
targetTable.col1 = sourceTable.cola,
targetTable.col2 = sourceTable.colb,
targetTable.col3 = sourceTable.colc,
targetTable.col4 = sourceTable.cold
Traaa !效果很好!
有了以上的理解,您就可以修改设置的字段和“on”标准来完成您的工作。您还可以执行检查,然后将数据拉入临时表,然后使用替换表和列名的上述语法运行更新。
希望有用,如果不行请告诉我。我会为你写一个精确的查询。