我正在随机选择一个表格并想标记所选的列。我有一个“导出”列,它是二进制的,默认设置为 0。选择它时,我希望它变成 1。我想结合一个 SELECT 和 INSERT 语句,如:
SELECT id, status, vorname, nachname, strasse, hnr, plz, ort, telefon1, telefon2
FROM adressen
WHERE (vorname LIKE ? OR nachname LIKE ?)
ORDER BY RAND() LIMIT ?
AND INSERT INTO adressen (exported) VALUES '1'
但这似乎不是正确的方法。 select 语句完全正常,就像我想要的那样,但我不知道如何将每个选定行的导出列设置为 1。由于数据是随机选择的,我不能只在它后面做一个插入语句,因为它不会匹配相同的选择。
答案 0 :(得分:2)
将结果保存在临时表中,然后使用update
:
CREATE TABLE temp_results AS
SELECT id, status, vorname, nachname, strasse, hnr, plz, ort, telefon1, telefon2
FROM adressen
WHERE (vorname LIKE ? OR nachname LIKE ?)
ORDER BY RAND()
LIMIT ?;
那么:
update adressen a join
temp_results r
on a.id = r.id
set exported = 1;
注意:这里假设 id
是唯一的。如果不是,则使用表上的主键。
我还怀疑您的查询可能需要类似 exported = 0
的内容。