我有一个简单的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);
我试图运行以下更新,但我只得到错误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 …此代码不适用于MySQL 5.0,如何重新编写它以使其工作
DELETE FROM posts where id=(SELECT id FROM posts GROUP BY id  HAVING ( COUNT(id) > 1 ))
我想删除没有唯一ID的列.我将添加大多数时间只有一个id(我尝试了语法,但它也不起作用).
我看到很多类似的问题,但它们要么是如此复杂,我无法理解它们,或者它们似乎并没有问同样的问题.
这很简单:我有两列:用户(dmid)和下载(dfid).
选择下载特定文件的所有用户:
SELECT DISTINCT dmid FROM downloads_downloads where dfid = "7024"
使用上面的用户,找到他们都下载的所有文件:
SELECT dfid from downloads_downloads WHERE dmid = {user ids from #1 above}
计算并订购dfid结果,这样我们就可以看到每个文件收到的下载次数:
dfid    dl_count_field
----    --------------
18       103
3        77
903      66
我试图回答.
这似乎很接近,但MySql陷入困境,即使在30秒后也没有响应 - 我最终重启了Apache.而且我现在不知道如何在没有语法错误的情况下构造计数和顺序,因为复杂的语句 - 它甚至可能不是正确的语句.
SELECT dfid from downloads_downloads WHERE dmid IN (
    SELECT DISTINCT dmid FROM `downloads_downloads` where dfid = "7024")
我有一个问题,让选择子查询工作UPDATE.我正在尝试以下内容:
UPDATE foo
   SET bar=bar-1
 WHERE baz=
      (
       SELECT baz
       FROM foo
       WHERE fooID='1'
      )
foo具有主键的表名称在哪里fooID.bar并且baz是INT类型.执行此操作时,我收到以下错误:
Error: A query failed. You can't specify target table 'foo' for update 
in FROM clause
我的目标是建立一个年度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        |
+-------------------------+ 
AssociatedClient:
+-----------+-----------------+
| Client_id | Registration_id |
+-----------+-----------------+
|         2 |               2 | 
|         3 |               2 | 
|         3 | …我正在使用一个收集表单数据的复杂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      |
通过phpmyadmin我需要全球更新一些表格,具体我要更新所有fieldValue方法 …
我有一个表,我只按ID顺序显示最新的30行.
我正在尝试使用下面的查询删除30个最新行之后的任何行.
DELETE FROM table WHERE type = 'test' ORDER BY id DESC LIMIT 30, 60
我一直在下面得到这个错误
#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
我究竟做错了什么?
我有以下实体:
我想使用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;
}
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 …我有一个脚本,我的PHP网站每小时运行一次.在那个脚本中,我想要一些MySQL查询来删除表中的每条记录但是说最新的50.
我该怎么办呢?
// pseudo code: like this?
DELETE from chat WHERE id = max (ID - 50) 
出于某种原因,使用PhpMyAdmin运行时返回90行:
SELECT COUNT(*) 
FROM le_wp_posts 
WHERE post_content LIKE '%Â%'
但以下仅更新3行:
UPDATE le_wp_posts 
SET post_content = REPLACE(post_content, 'Â', '') 
WHERE post_content LIKE '%Â%'
我也尝试过省略声明中的WHERE条款UPDATE.是否有任何明显的原因我忽略了导致这个问题的原因?或者我可以采取哪些步骤来调查原因?我的SQL不是最好的.