【问题标题】:MySQL DELETE a SELECT resultMySQL 删除一个 SELECT 结果
【发布时间】:2018-09-11 20:35:03
【问题描述】:

我有一个按预期提供结果集的 SELECT:

  SELECT iper.ip, trafikk.port, COUNT(trafikk.port) as Antall FROM trafikk 
    Inner JOIN iper ON iper.id = trafikk.FK_ID 
    Group by IPer.IP 
    having Antall=4 and trafikk.port=445

结果示例: http://tore.aasli.net/sql/Delete.jpg

现在,如果我想删除这些 SELECTed 行,最好的方法是什么?

【问题讨论】:

  • 在此处以文本形式发布代码/错误消息,而不是链接到托管在外部服务器上的图片。他们可能会消失,然后这个问题就会变得不完整。
  • 我的 SELECT sql 中没有错误消息。问题是如何构造一个DELETE来删除结果集,优先在一个SQL中(例如基于我的SELECT sql)

标签: mysql delphi-xe


【解决方案1】:
DELETE FROM iper 
WHERE iper.ip IN(
    SELECT iper.ip 
    FROM trafikk
    WHERE iper.id = trafikk.FK_ID AND trafikk.port=445
    Group by iper.ip 
    having COUNT(trafikk.port)=4
)

【讨论】:

  • 谢谢,但是这个 sql 给出了一个错误“Uknown column 'trafikk.port' in 'having Clause'。我在“iper.ip”和“count(Trafikk.port) 之间加了一个逗号。
  • 现在试试,这是我的错误。
  • 澄清一下,我有两张桌子。一张 IPer 表,一张 Trafikk 表。 IPer 表(IPer.ID 的一侧)和 Trafikk.FK_ID 之间存在 1:n 关系。所以 Trafikk 可能每个 Iper.IP 有很多行
  • 谢谢埃内斯托。我想我们现在更接近了。但仍然是“错误 1241”“操作数应包含 1 列”
  • 不要发布不起作用的代码。这是什么??? ...WHERE iper.ip IN(SELECT iper.ip, trafikk.port, COUNT(trafikk.port) as Antall FROM trafikk...
猜你喜欢
  • 2018-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-26
  • 1970-01-01
  • 2021-12-06
  • 1970-01-01
  • 2012-05-05
相关资源
最近更新 更多