小编oNa*_*are的帖子

如何在 CONCAT MySQL 中排除 NULL 值?

如果我有这个 - tadd 是Address表:

CONCAT(tadd.street_number, ' ',
            tadd.street_name,', ',
            tadd.apt_number,', ',
            tadd.city,', ',
            tadd.postal_code,', ',
            tadd.country) AS 'Address'
Run Code Online (Sandbox Code Playgroud)

如果 apt_number 不存在,有没有办法排除它?

我在想:

WHERE tadd.apt_number IS NOT NULL
Run Code Online (Sandbox Code Playgroud)

但它只会返回那些带有apt_number, 的行,即使某些东西有效,我该如何处理那个额外的逗号。

如果是重复的,请在评论中发布链接。

mysql null concat

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

WHERE 子句的替代方案

有没有办法只在SELECT列中包含某些数据的行而不使用WHERE

例如,如果我有这个:

SELECT * FROM Users
WHERE town = 'Townsville'
Run Code Online (Sandbox Code Playgroud)

有没有办法将WHERE子句实现到SELECT语句中?

就像是

SELECT *, town('Townsville') FROM Users
Run Code Online (Sandbox Code Playgroud)

这是一个奇怪的问题,但这是我的同龄人问过的问题

sql-server

17
推荐指数
8
解决办法
7699
查看次数

我想在不切换数据库的情况下将用户/登录名添加到另一个数据库中的角色

我有一个“新”的数据库角色/登录mynewdb与角色"emailsender"。我已经编写了一个配置文件,sp_send_dbmail现在正在尝试编写将登录名添加到DatabaseMailUserRolein 的脚本,msdb并且似乎在绕圈子。重要的是,我想在mynewdb. 我知道我可以SSMS用来做到这一点。问题是:

如何编写脚本将用户T-SQLmynewdb数据库添加到角色中而不切换到msdb

sql-server role t-sql

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

如何在 MySQL 中找到下一个星期六

我有触发器和一个存储过程(所以 SP 在触发器运行时运行)。我需要一个函数来找到下一个星期六放入 SP。

所以让我们说,今天是星期三(2015-7-22)。如果我的触发器今天运行,其中的 SP 必须找到下一个星期六 (2015-7-25)。

另外,即使是星期六,但时间早于晚上 9.30,它也必须找到当天。晚上 9.30 之后,它必须在下周六返回。

我想把我的整个触发器和 sp 放在这里,但我不想在这里拥挤。我只需要想法,谢谢。

编辑:

感谢 oNaye,我编写了以下代码:

CREATE DEFINER=`root`@`localhost` PROCEDURE `newGuess`(
IN `muserID` INT, 
IN `numm1` INT, 
IN `numm2` INT, 
IN `numm3` INT, 
IN `numm4` INT, 
IN `numm5` INT, 
IN `numm6` INT)
    begin
set @today = (select weekday(curdate())+1); /*monday is the first day in here*/
if @today<6 or @today=7 then /*it is NOT saturday*/
    set @nextSaturday = (SELECT DATE_ADD(NOW(),INTERVAL IF(WEEKDAY(NOW())>=5,(6-WEEKDAY(NOW())),(5-WEEKDAY(NOW()))) DAY));
end if;
if @today = 6 then /* …
Run Code Online (Sandbox Code Playgroud)

mysql trigger stored-procedures datetime date

6
推荐指数
1
解决办法
6705
查看次数

无法访问其他数据库

我正在为我的大学做一个项目。他们给了我MySQL他们在服务器上设置的数据库的登录用户名和密码。

有了这个用户名和密码,我就可以登录到服务器了。我对它运行了以下查询:

SHOW GRANTS;
Run Code Online (Sandbox Code Playgroud)

并得到以下输出

GRANT USAGE ON *.* TO 'me'@'localhost' IDENTIFIED BY PASSWORD '*mypass'
Run Code Online (Sandbox Code Playgroud)

现在,如果我尝试使用以下代码创建数据库

CREATE DATABASE test;
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

Error: 1044
Access denied for user 'me'@'localhost' to database 'test'
Run Code Online (Sandbox Code Playgroud)

据我所知,意味着访问所有数据库的所有表。问题出在哪儿。请帮我纠正我。

mysql permissions errors

6
推荐指数
1
解决办法
134
查看次数

创建触发器 MySql 更新或插入另一个表

我正在尝试更多地了解 mysql 中的触发器,所以请耐心等待。我有两张桌子,

TestTable  
 (id INTEGER PRIMARY KEY AUTO_INCREMENT, ItemId INTEGER,Date date, Value REAL)

TestTable2
 (id INTEGER PRIMARY KEY AUTO_INCREMENT, ItemId INTEGER,Year INTEGER, Month INTEGER, Open REAL, Close REAL, Increase REAL)
Run Code Online (Sandbox Code Playgroud)

其中表 TestTable 是特定日期某个项目的测量值。测试表 2 包含特定月份、年份的测量值以及此期间的增量。

我想创建一个触发器,当我将值插入到 TestTable 中时,它会更新或将值插入到 TestTable2 中。

这就是我尝试创建的触发器的样子,

CREATE TRIGGER 'monthUpdateTrigger' AFTER INSERT ON TestTable 
BEGIN 
IF NOT (EXISTS (SELECT 1 FROM TestTable2 WHERE 
(ItemId=NEW.ItemId AND Year=YEAR(NEW.Date) AND Month=MONTH(NEW.Date)))) 
THEN 
    INSERT INTO TestTable2 (ItemId,Year,Month,Open,Close,Increase ) VALUES 
    (NEW.ItemId , YEAR(NEW.Date), MONTH(NEW.Date),NEW.Value,NEW.Close,0.0); 
ELSE
    UPDATE TestTable2 SET Close=NEW.Close AND …
Run Code Online (Sandbox Code Playgroud)

mysql trigger

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

Postgres DDL 和 DML 最佳实践和编码标准

是否有您可以共享和推荐的 Postgres DDL 和 DML/SQL 的最佳实践或编码/设计约定。

我正在寻找类似于谷歌编程的东西

先感谢您。

postgresql best-practices dml ddl

5
推荐指数
2
解决办法
3391
查看次数

我的 HD 崩溃了,我无法启动 MySQL

我在 Windows 8 上,我的 SSD 损坏了,我在新驱动器上安装了 Windows。我在 MySQL 5.6.12 之前有过,现在我安装了 5.6.17 并尝试移动整个数据目录。MySQL 安装位置与之前相同。但是当我启动它时,我收到以下错误:

2015-02-23 17:44:44 12492 [Note] Plugin 'FEDERATED' is disabled.
wampmysqld64: Incorrect information in file: '.\mysql\plugin.frm'
2015-02-23 17:44:44 12492 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
2015-02-23 17:44:44 12492 [Note] InnoDB: Using atomics to ref count buffer pool pages
2015-02-23 17:44:44 12492 [Note] InnoDB: The InnoDB memory heap is disabled
2015-02-23 17:44:44 12492 [Note] InnoDB: Mutexes and rw_locks use Windows interlocked functions
2015-02-23 17:44:44 …
Run Code Online (Sandbox Code Playgroud)

mysql windows upgrade

5
推荐指数
1
解决办法
1012
查看次数

Microsoft Access 导出到 Excel

我有一个 Excel 电子表格,其中填充了大量按列(姓名列、职业列等)组织的数据。我最近已将所有这些数据移至 Microsoft Access 2010 中进行处理,但我确实需要在 Access 和 Excel 之间来回移动这些数据。从那时起,我对数据进行了很多更改,现在我想将这些数据从 Access 导出回 Excel,数据显示在导入数据的同一列中。我已尝试将数据导出回 Excel,但它看起来与我最初导出数据的 Excel 文件不同。

我想知道是否有一种方法可以将 Access 中的所有数据导出回 Excel,以便其格式与导出到 Access 之前完全相同

抱歉,如果这是一个新手问题,我是 Access 新手,还没有太多经验。

谢谢

ms-access export excel ms-access-2010

5
推荐指数
1
解决办法
952
查看次数

为大量不同的实体存储创建/退休日期

在我现在正在处理的数据库中,几乎每个实体都有这 4 列:

CreatedDate
CreatedBy
RetiredDate
RetiredBy
Run Code Online (Sandbox Code Playgroud)

通常这用于记录目的,对于某些实体来说,知道它何时退役的有用性是有争议的(但不要告诉我的老板)。对于其他一些东西,(比如卡车)它更有意义,因为“退役”的车辆可能会重新投入使用。

无论如何,我想知道将这些信息放在一张桌子上是否是个好主意,因为它到处重复。如果是的话,任何人都有一个好名字..?简单created_retired_dates吗?

schema normalization database-design

4
推荐指数
1
解决办法
1801
查看次数

执行 LIKE WHERE 条件的不同方式?

我有一个工作正常的查询:

  SELECT  
         month_date= month(SendTime) ,year_date =year(sendtime) ,MessageType
          ,COUNT(MessageType) AS MESSAGE_COUNT
  FROM Message
  WHERE year(SendTime)= 2014
      and messagetype NOT LIKE '%test%' 
      and messagetype NOT LIKE '%ANOTHER THING%' 
      and messagetype NOT LIKE '%STUFF%' 
  GROUP BY month(SendTime),year(sendtime), MessageType
Run Code Online (Sandbox Code Playgroud)

我注意到的是LIKE有条件它使流逝时间变慢。

使用上面的查询,它在经过时间 0.550 运行,没有它们 0.154。

有没有其他方法可以缩短这次时间并使查询更快?

没有消息类型不是索引,我不允许更改它。

sql-server-2012

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