我有一个简单的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 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(我尝试了语法,但它也不起作用).
我看到很多类似的问题,但它们要么是如此复杂,我无法理解它们,或者它们似乎并没有问同样的问题.
这很简单:我有两列:用户(dmid)和下载(dfid).
选择下载特定文件的所有用户:
SELECT DISTINCT dmid FROM downloads_downloads where dfid = "7024"
Run Code Online (Sandbox Code Playgroud)使用上面的用户,找到他们都下载的所有文件:
SELECT dfid from downloads_downloads WHERE dmid = {user ids from #1 above}
Run Code Online (Sandbox Code Playgroud)计算并订购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) 我有一个问题,让选择子查询工作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) 我的目标是建立一个年度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数据库表.我在下面的一个名为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方法 …
我有一个表,我只按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)
我究竟做错了什么?
我有以下实体:
我想使用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) 我有一个脚本,我的PHP网站每小时运行一次.在那个脚本中,我想要一些MySQL查询来删除表中的每条记录但是说最新的50.
我该怎么办呢?
// pseudo code: like this?
DELETE from chat WHERE id = max (ID - 50)
Run Code Online (Sandbox Code Playgroud) 出于某种原因,使用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不是最好的.