我正在尝试SELECT使用GROUP BY子句创建语句,该子句应返回"默认值".
想象一下以下简单的MySQL表:
CREATE TABLE `tracker` (
`id` INTEGER PRIMARY KEY auto_increment,
`date` DATETIME NOT NULL,
`customer_id` INTEGER NOT NULL
);
Run Code Online (Sandbox Code Playgroud)
该表只包含一条记录:
INSERT INTO `tracker` (`date`, `customer_id`) VALUES('2010-05-03', 1);
Run Code Online (Sandbox Code Playgroud)
在病房之后,我正在执行以下SQL查询:
SELECT DATE(`date`), COUNT(customer_id) FROM tracker
WHERE DATE(`date`) >= '2010-05-01' AND DATE(`date`) <= '2010-05-05'
GROUP BY DATE(`date`) ORDER BY DATE(`date`);
Run Code Online (Sandbox Code Playgroud)
并获得预期的结果集:
+----+---------------------+-------------+
| id | date | customer_id |
+----+---------------------+-------------+
| 1 | 2010-05-10 00:00:00 | 1 |
+----+---------------------+-------------+
Run Code Online (Sandbox Code Playgroud)
但是,我希望结果集看起来像这样:
+--------------+--------------------+
| DATE(`date`) | COUNT(customer_id) |
+--------------+--------------------+ …Run Code Online (Sandbox Code Playgroud) 我有MYSQL表如下
user TABLE {id INT}
profile TABLE {user_id INT, facebook_id varchar(50)}
messages TABLE {id INT, message TEXT, from_id INT, type enum('main','facebook'}
messages_to TABLE {user_id varchar(50), message_id INT}
profile.user_id REFERS To user.id
- the messages_to.message_id refers to the messages.ID column.
- the messages_to.user_id refers to profile.user_id IF messages.type = 'main' BUT
if message_type = 'facebook' THEN messages_to.user_id REFERS to profile.facebook_id
Run Code Online (Sandbox Code Playgroud)
我想做一个基本上选择给特定人的所有消息的连接查询,但事情是messages_to.user_id可以引用 the person's facebook ID or the person's ID (a reference to user.id column).
所以基本上查询应该如下工作
messages.type = 'facebook'检查messages_to.user_id是否等于该人的FACEBOOK ID.(请注意,messages_to表存储每个邮件ID的收件人) …我正在执行几个选择并希望计算重叠.例:
SELECT id FROM foo WHERE ...
SELECT id FROM bar WHERE ...
SELECT id FROM baz WHERE ...
Run Code Online (Sandbox Code Playgroud)
分别调用这些查询a,b和c.假设给出(1,2,3,4,5),b给出(1,3,5),c给出(4,5,6).我想结合这些并计算多重性.对于上面的例子,我正在寻找的结果是
id | multiplicity
-----------------
1 | 2
2 | 1
3 | 2
4 | 2
5 | 3
6 | 1
Run Code Online (Sandbox Code Playgroud)
如何在一个查询中在MySQL5中执行此操作?(a,b和c部分可以是普通选择或存储过程).
嗨当我尝试使用JNDI连接到数据源时,我收到此错误:
[org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1452)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1371)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
at org.apache.roller.weblogger.business.DatabaseProvider.getConnection(DatabaseProvider.java:179)
at org.apache.roller.weblogger.business.DatabaseProvider.<init>(DatabaseProvider.java:141)
at org.apache.roller.weblogger.business.startup.WebloggerStartup.prepare(WebloggerStartup.java:171)
at org.apache.roller.weblogger.ui.core.RollerContext.contextInitialized(RollerContext.java:138)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4205)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4704)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1079)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:1002)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:506)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1315)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:324)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1061)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
at org.apache.catalina.core.StandardService.start(StandardService.java:525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: java.lang.NullPointerException
at …Run Code Online (Sandbox Code Playgroud) 我对基本的MySQL"好",但这是"我的头脑"!
目标:
数据库表是巨大的,速度是一个问题.
没有MyISAM是inoDB会更快吗?每个数据库都在一个唯一的表中.
我被赋予了这个作为我正在尝试做的事情的起点:
CREATE TABLE `table` LIKE LiveTable
LOAD DATA INFILE..... INTO `table`
UPDATE `table` SET delete=1; -- Set the delete field to true because it will not have been updated
UPDATE `table` INNER JOIN`table`ON `LiveTable.ID`=`table.ID`
SET LiveTable.Col1=table.Col1, LiveTable.Col2=table.Col2….. delete=0
INSERT INTO LiveTable(ID,Col1,Col2,… delete=0)
SELECT ID,Col1,Col2,...FROM `table`
LEFT JOIN LiveTable
ON table.ID = LiveTable.ID
WHERE LiveTable.ID IS NULL
DELETE FROM LiveTableWHERE delete = 0
EMPTY TABLE `table`
Run Code Online (Sandbox Code Playgroud)
> CREATE TABLE `product_table` (
> `programname` …Run Code Online (Sandbox Code Playgroud) 我的项目需要从用户开始输入,左边的间距和单词右边的间距,例如'apple'.如果用户键入"apple"或"apple",无论是单词的左侧还是右侧是一个空格还是多个空格,我都需要以这种方式存储它.
此字段具有Unique属性,但我尝试在左侧插入带间距的单词,并且它可以正常工作.但是当我尝试在右边插入带有间距的单词时,它会修剪单词右边的所有间距.
所以我想在间距之后在单词的右边添加一个特殊字符.但我希望有一个更好的解决方案来解决这个问题.
CREATE TABLE strings
( id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
string varchar(255) COLLATE utf8_bin NOT NULL,
created_ts timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (id), UNIQUE KEY string (string) )
ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_bin
Run Code Online (Sandbox Code Playgroud) 在MySQL表中,命名列,我可以使用
我还应遵循哪些其他规则?
(MySQL5)
以前我正在执行以下操作以从报告表中获取每日计数。
SELECT COUNT(*) AS count_all, tracked_on
FROM `reports`
WHERE (domain_id = 939 AND tracked_on >= '2014-01-01' AND tracked_on <= '2014-12-31')
GROUP BY tracked_on
ORDER BY tracked_on ASC;
Run Code Online (Sandbox Code Playgroud)
显然,这不会给我 0 缺失日期的计数。
然后我终于找到了一个最佳解决方案来生成给定日期范围之间的日期序列。但我面临的下一个挑战是将其与我的报告表连接起来并按日期分组计数。
select count(*), all_dates.Date as the_date, domain_id
from (
select curdate() - INTERVAL (a.a + (10 * b.a) + (100 * c.a)) DAY as Date
from (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all …Run Code Online (Sandbox Code Playgroud) 有没有办法以字符串格式返回MySQL表中的所有列?
我希望有这样的东西返回:
course_id, name, par, yds, mtrs 等等
我知道如何在表(SHOW FIELDS FROM course;)中显示字段/列,但这些是以表格格式返回的.
我在使用Hibernate 4.1和MySQL 5将文件夹实体保存到数据库时收到了我在下面添加的错误.我对其他权利没有任何问题.
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax
Run Code Online (Sandbox Code Playgroud)
这是我的文件夹表:
CREATE TABLE `folder` (
`folder_id` int(11) NOT NULL AUTO_INCREMENT,
`folder_name` varchar(45) COLLATE utf8_turkish_ci NOT NULL,
`order` int(11) DEFAULT NULL,
PRIMARY KEY (`folder_id`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_turkish_ci$$
Run Code Online (Sandbox Code Playgroud)
我的文件夹实体:
@Entity
@Table(name = "folder")
public class Folder implements Serializable{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "folder_id", nullable = false, …Run Code Online (Sandbox Code Playgroud)