我正在使用存储过程来做这件事,显然以下不会是我的确切代码,而是一个高度修剪的版本,可以让您了解这个想法。请记住,我实际上在这个临时表上进行了很多筛选,因此向CREATE TABLE
查询添加任何内容都会比其他任何事情更麻烦。遍历一个表并执行基于MySQL中的值的逻辑
BEGIN
CREATE TEMPORARY TABLE IF NOT EXISTS filtered_results AS (SELECT * FROM users);
# Numerous filters removing stuff from the table.
END
对于这个问题的目的,可以说,该表的结构是非常简单的,就像这样:
user_id INT(11) AUTO_INCREMENT PRIMARY
name VARCHAR(30) NOT NULL
现在,让我们说,我有一个问题表结构如下:
question_id INT(11) AUTO_INCREMENT PRIMARY
user_id INT(11)
text VARCHAR(40)
现在让我们说我想遍历表并检查一些其他表来筛选没有至少4个问题的用户。因此,像这样:
for each row in filtered_results
if count(question_id) < 4 where user_id = row.user_id in questions
delete row
end if
end loop
其中USER_ID在'从表中删除(具有USER_ID COUNT(*从问题分组选择USER_ID)<4)'? –
@JorgeCampos - 我将如何去取得'filtered_results'表中每行的user_id而不进行迭代? – Hobbyist
例如,我有500个用户有问题,但如果'filtered_results'表中只有3个用户,则没有理由选择并尝试从〜500个用户中删除。 – Hobbyist