在 SELECT 语句

时间:2021-03-10 17:16:35

标签: php mysql sql

我正在随机选择一个表格并想标记所选的列。我有一个“导出”列,它是二进制的,默认设置为 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。由于数据是随机选择的,我不能只在它后面做一个插入语句,因为它不会匹配相同的选择。

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 的内容。