0
我有數據,像這樣的表:SQL更新導致
-------------+-------------+-------
| foo_date | description | flag |
-------------+-------------+-------
| 2014-01-01 | asdf 123 | 1 |
-------------+-------------+-------
| 2014-01-01 | FOO | 1 |
-------------+-------------+-------
| 2014-01-02 | asdf 456 | 1 |
-------------+-------------+-------
我試圖將標誌設置爲0的任何行,其中的描述是不是「foo」和有在同一天的一行是「FOO」。因此,在此示例數據集中,第一行將獲得標誌= 0,因爲同一日期有一個FOO,但第三行不會因爲該日期沒有匹配的FOO。以下是我提出的那些作品,但它並不覺得這是最有效的方法。
UPDATE
foo_table t1
JOIN
(
SELECT
*
FROM
foo_table
WHERE
(foo_date) IN
(
SELECT
foo_date
FROM
foo_table
WHERE
description LIKE 'FOO%'
)
AND description NOT LIKE 'FOO%'
) AS t2
ON
(
t1.foo_date = t2.foo_date
AND t1.description = t2.description
)
SET
t1.flag = 0
工作的呢?如果是這樣,這似乎是[codereview.se]的問題。 – hichris123
您正在使用哪些DBMS? –
@a_horse_with_no_name:現在的MySQL,以後可能還有別的東西(不是MSSQL) – fwrawx