相关疑难解决方法(0)

您无法在FROM子句中指定要更新的目标表

我有一个简单的mysql表:

CREATE TABLE IF NOT EXISTS `pers` (
  `persID` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(35) NOT NULL,
  `gehalt` int(11) NOT NULL,
  `chefID` int(11) DEFAULT NULL,
  PRIMARY KEY (`persID`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

INSERT INTO `pers` (`persID`, `name`, `gehalt`, `chefID`) VALUES
(1, 'blb', 1000, 3),
(2, 'as', 1000, 3),
(3, 'chef', 1040, NULL);
Run Code Online (Sandbox Code Playgroud)

我试图运行以下更新,但我只得到错误1093:

UPDATE pers P 
SET P.gehalt = P.gehalt * 1.05 
WHERE (P.chefID IS NOT NULL 
OR gehalt < 
(SELECT (
    SELECT MAX(gehalt * 1.05) 
    FROM pers …
Run Code Online (Sandbox Code Playgroud)

mysql sql mysql-error-1093

353
推荐指数
9
解决办法
25万
查看次数

如何从MySQL中的select中删除?

此代码不适用于MySQL 5.0,如何重新编写它以使其工作

DELETE FROM posts where id=(SELECT id FROM posts GROUP BY id  HAVING ( COUNT(id) > 1 ))
Run Code Online (Sandbox Code Playgroud)

我想删除没有唯一ID的列.我将添加大多数时间只有一个id(我尝试了语法,但它也不起作用).

mysql sql select subquery uniqueidentifier

79
推荐指数
3
解决办法
18万
查看次数

在另一个where语句(子查询?)中使用一个sql查询的结果

我看到很多类似的问题,但它们要么是如此复杂,我无法理解它们,或者它们似乎并没有问同样的问题.

这很简单:我有两列:用户(dmid)和下载(dfid).

  1. 选择下载特定文件的所有用户:

    SELECT DISTINCT dmid FROM downloads_downloads where dfid = "7024"
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用上面的用户,找到他们都下载的所有文件:

    SELECT dfid from downloads_downloads WHERE dmid = {user ids from #1 above}
    
    Run Code Online (Sandbox Code Playgroud)
  3. 计算并订购dfid结果,这样我们就可以看到每个文件收到的下载次数:

    dfid    dl_count_field
    ----    --------------
    18       103
    3        77
    903      66
    
    Run Code Online (Sandbox Code Playgroud)

我试图回答.

这似乎很接近,但MySql陷入困境,即使在30秒后也没有响应 - 我最终重启了Apache.而且我现在不知道如何在没有语法错误的情况下构造计数和顺序,因为复杂的语句 - 它甚至可能不是正确的语句.

SELECT dfid from downloads_downloads WHERE dmid IN (
    SELECT DISTINCT dmid FROM `downloads_downloads` where dfid = "7024")
Run Code Online (Sandbox Code Playgroud)

mysql sql subquery

36
推荐指数
1
解决办法
8万
查看次数

使用WHERE SELECT子查询错误的MYSQL更新

我有一个问题,让选择子查询工作UPDATE.我正在尝试以下内容:

UPDATE foo
   SET bar=bar-1
 WHERE baz=
      (
       SELECT baz
       FROM foo
       WHERE fooID='1'
      )
Run Code Online (Sandbox Code Playgroud)

foo具有主键的表名称在哪里fooID.bar并且baz是INT类型.执行此操作时,我收到以下错误:

Error: A query failed. You can't specify target table 'foo' for update 
in FROM clause
Run Code Online (Sandbox Code Playgroud)

mysql select subquery

28
推荐指数
2
解决办法
6万
查看次数

无法绕过复杂的SQL删除查询

情况

我的目标是建立一个年度cronjob,根据年龄从数据库中删除某些数据.在我看来,我拥有Bash和MySQL的强大功能.我开始编写一个bash脚本,但后来让我感到震惊的是,我可以用一个SQL查询完成所有工作.

我本质上更像程序员而且我对数据结构没有太多经验,所以这就是我想要一些帮助的原因.

表/数据结构

此查询的相关表和列如下:

注册:

+-----+-------------------+
| Id  | Registration_date |
+-----+-------------------+
|   2 | 2011-10-03        | 
|   3 | 2011-10-06        | 
|   4 | 2011-10-07        | 
|   5 | 2011-10-07        | 
|   6 | 2011-10-10        | 
|   7 | 2011-10-13        | 
|   8 | 2011-10-14        | 
|   9 | 2011-10-14        | 
|  10 | 2011-10-17        |
+-------------------------+ 
Run Code Online (Sandbox Code Playgroud)

AssociatedClient:

+-----------+-----------------+
| Client_id | Registration_id |
+-----------+-----------------+
|         2 |               2 | 
|         3 |               2 | 
|         3 | …
Run Code Online (Sandbox Code Playgroud)

mysql sql bash

23
推荐指数
1
解决办法
924
查看次数

MySQL UPDATE与同一个表的SUBQUERY

我正在使用一个收集表单数据的复杂MySQL数据库表.我在下面的一个名为test的示例表中简化了布局:

|FormID|FieldName|  FieldValue |
|   1  |   city  |   Houston   |
|   1  | country |     USA     |
|   2  |   city  |   New York  |
|   2  | country |United States|
|   3  | property|   Bellagio  |
|   3  |  price  |     120     |
|   4  |   city  |   New York  |
|   4  |zip code |    12345    |
|   5  |   city  |   Houston   |
|   5  | country |     US      |
Run Code Online (Sandbox Code Playgroud)

通过phpmyadmin我需要全球更新一些表格,具体我要更新所有fieldValue方法 …

mysql sql phpmyadmin

19
推荐指数
2
解决办法
2万
查看次数

Mysql删除顺序依次

我有一个表,我只按ID顺序显示最新的30行.

我正在尝试使用下面的查询删除30个最新行之后的任何行.

DELETE FROM table WHERE type = 'test' ORDER BY id DESC LIMIT 30, 60
Run Code Online (Sandbox Code Playgroud)

我一直在下面得到这个错误

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' 60' at line 1
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

mysql sql

14
推荐指数
2
解决办法
2万
查看次数

如何使用JPA和Hibernate删除带有JOIN的实体

我有以下实体:

在此输入图像描述

我想使用JPA删除用户的id和用户名的WordSet.

这是实体声明:

用户

@Entity
@Data
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@AllArgsConstructor
@NoArgsConstructor
public class User extends AbstractModelClass {

    private String name;
    private String username;
    private String password;
    private String email;

    @ManyToMany(fetch = FetchType.EAGER)
    private Set<Role> roles;
}
Run Code Online (Sandbox Code Playgroud)

UserDictionary

@Entity
@Data
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@AllArgsConstructor
@NoArgsConstructor
public class UserDictionary extends AbstractModelClass {

    @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, mappedBy = "userDictionary")
    private Set<WordSet> wordSets;

    @OneToOne(cascade = CascadeType.ALL)
    private User user;

    @PrePersist
    private void addDictionaryToWordSets() {
        wordSets.forEach(wordSet …
Run Code Online (Sandbox Code Playgroud)

java mysql sql hibernate jpa

10
推荐指数
1
解决办法
7941
查看次数

MySQL删除除最新的X记录之外的所有内容

我有一个脚本,我的PHP网站每小时运行一次.在那个脚本中,我想要一些MySQL查询来删除表中的每条记录但是说最新的50.

我该怎么办呢?

// pseudo code: like this?
DELETE from chat WHERE id = max (ID - 50) 
Run Code Online (Sandbox Code Playgroud)

mysql records sql-delete

9
推荐指数
1
解决办法
6781
查看次数

MySQL REPLACE影响0行,但WHERE ... LIKE返回90

出于某种原因,使用PhpMyAdmin运行时返回90行:

SELECT COUNT(*) 
FROM le_wp_posts 
WHERE post_content LIKE '%Â%'
Run Code Online (Sandbox Code Playgroud)

但以下仅更新3行:

UPDATE le_wp_posts 
SET post_content = REPLACE(post_content, 'Â', '') 
WHERE post_content LIKE '%Â%'
Run Code Online (Sandbox Code Playgroud)

我也尝试过省略声明中的WHERE条款UPDATE.是否有任何明显的原因我忽略了导致这个问题的原因?或者我可以采取哪些步骤来调查原因?我的SQL不是最好的.

mysql sql phpmyadmin

9
推荐指数
1
解决办法
602
查看次数