【问题标题】:Selecting and storing values, using those values in IN clause选择和存储值,在 IN 子句中使用这些值
【发布时间】:2017-03-25 14:26:15
【问题描述】:

有没有办法从一个表中选择一组值,然后在 IN 子句中使用这些值?

我想从一个表中选择 ID,然后在另一个表中更新这些 ID 的数据。

类似

<some var> = SELECT id from tableA WHERE <something>;

INSERT INTO tableB <stuff> where id IN (<some var>);

我发布的变量语法不真实。只是想显示我的意图。我已经阅读了一些关于 SET 的内容,但对 MySQL 还是很陌生,所以它并不完全有意义。还提到 SET 只能设置特定类型的变量,而且看起来都很简单。

谢谢!

【问题讨论】:

  • 您使用update 更新列中的值。您使用insert 插入新行。

标签: mysql variables


【解决方案1】:

你可以使用insert . . . select:

INSERT INTO tableB (id)
    SELECT id 
    FROM tableA
    WHERE <something>;

我不确定IN 与此有什么关系。

编辑:

哦,你想要一个update

update tableb b join
       tablea a
       on b.id = a.id
    set b.col = ??
    where <conditions on a>;

您也可以使用in

update tableb b
    set col = ??
    where b.id in (select a.id from tablea a where <conditions>);

最大的不同是你是否想使用来自tablea的信息。如果你这样做,那么你需要join 版本。

【讨论】:

  • 实际上我确实需要一个 INSERT 但带有一个 ON UPDATE 子句。因此,如果它不存在,我需要插入,如果存在,我需要更新。但我需要为从 tableA 中选择的所有 ID 这样做
猜你喜欢
  • 2014-08-30
  • 1970-01-01
  • 2018-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-05
  • 2019-01-11
  • 1970-01-01
相关资源
最近更新 更多