首页 > 解决方案 > 在 SELECT 语句之后标记所有选定的列

问题描述

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

标签: phpmysqlsql

解决方案


将结果保存在临时表中,然后使用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.


推荐阅读