2つのMySQLが正常に機能し、それらを1つのクエリに結合する方法を見つけようとしています。
まず、従業員のIDを選択します。
SELECT 'ID' FROM `employee` ORDER BY ID DESC LIMIT 1;
ID100を返すとしましょう。
次に、IDが100の従業員のデータを更新します
UPDATE 'LOG' SET `TIME_EXIT`='2013/02/22' WHERE `ID`='100';
すべてを1つのクエリで実行できますか?
2つのMySQLが正常に機能し、それらを1つのクエリに結合する方法を見つけようとしています。
まず、従業員のIDを選択します。
SELECT 'ID' FROM `employee` ORDER BY ID DESC LIMIT 1;
ID100を返すとしましょう。
次に、IDが100の従業員のデータを更新します
UPDATE 'LOG' SET `TIME_EXIT`='2013/02/22' WHERE `ID`='100';
すべてを1つのクエリで実行できますか?
それらを足し合わせるだけです:
UPDATE LOG SET TIME_EXIT = '2013/02/22'
WHERE ID = (
SELECT ID
FROM employee
ORDER BY ID DESC
LIMIT
);
ただし、現在そのコードに基づいて更新されるのは最後のコードのみであるため、他の識別子を使用しemployee
て正しいものを選択し、正しいものであることを確認する必要があります。employee
UPDATE LOG SET TIME_EXIT = '2013/02/22'
WHERE ID = (
SELECT ID
FROM employee
WHERE NAME = 'JOHN SMITH'
ORDER BY ID DESC
LIMIT 1
);
今では数ヶ月ですが、あなたや他の人がグーグルでこれを見つけるのに役立つかもしれません…</ p>
同じ選択したテーブルのフィールドを更新する場合は、次を使用します。
UPDATE LOG SET
TIME_EXIT = '2013/02/22'
WHERE ID = (
SELECT ID
FROM (
SELECT ID
FROM LOG
WHERE whatEverYouWantToCheck = whateverYouNeed
) AS innerResult
)
したがって、副選択からIDを選択します。直接サブ選択しようとすると、mySQLはエラーメッセージを表示しますYou can't specify target table 'log' for update in FROM clause
が、この方法ではサブサブクエリをサブクエリで非表示にすることができ、それで問題ないようです。AS innerResult
エラーメッセージが表示されないようにすることを忘れないでください#1248 - Every derived table must have its own alias
。SELECT COUNT(*)
また、次のようなことを行う場合は、サブサブクエリフィールド名をサブクエリフィールド名と一致させます。SELECT CONCAT('#', ID)