如果我有这个 - 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
, 的行,即使某些东西有效,我该如何处理那个额外的逗号。
如果是重复的,请在评论中发布链接。
有没有办法只在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)
这是一个奇怪的问题,但这是我的同龄人问过的问题
我有一个“新”的数据库角色/登录mynewdb
与角色"emailsender"
。我已经编写了一个配置文件,sp_send_dbmail
现在正在尝试编写将登录名添加到DatabaseMailUserRole
in 的脚本,msdb
并且似乎在绕圈子。重要的是,我想在mynewdb
. 我知道我可以SSMS
用来做到这一点。问题是:
如何编写脚本将用户T-SQL
从mynewdb
数据库添加到角色中而不切换到msdb
?
我有触发器和一个存储过程(所以 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
他们在服务器上设置的数据库的登录用户名和密码。
有了这个用户名和密码,我就可以登录到服务器了。我对它运行了以下查询:
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)
我收到以下错误
Run Code Online (Sandbox Code Playgroud)Error: 1044 Access denied for user 'me'@'localhost' to database 'test'
据我所知,。意味着访问所有数据库的所有表。问题出在哪儿。请帮我纠正我。
我正在尝试更多地了解 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) 我在 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) 我有一个 Excel 电子表格,其中填充了大量按列(姓名列、职业列等)组织的数据。我最近已将所有这些数据移至 Microsoft Access 2010 中进行处理,但我确实需要在 Access 和 Excel 之间来回移动这些数据。从那时起,我对数据进行了很多更改,现在我想将这些数据从 Access 导出回 Excel,数据显示在导入数据的同一列中。我已尝试将数据导出回 Excel,但它看起来与我最初导出数据的 Excel 文件不同。
我想知道是否有一种方法可以将 Access 中的所有数据导出回 Excel,以便其格式与导出到 Access 之前完全相同
抱歉,如果这是一个新手问题,我是 Access 新手,还没有太多经验。
谢谢
在我现在正在处理的数据库中,几乎每个实体都有这 4 列:
CreatedDate
CreatedBy
RetiredDate
RetiredBy
Run Code Online (Sandbox Code Playgroud)
通常这用于记录目的,对于某些实体来说,知道它何时退役的有用性是有争议的(但不要告诉我的老板)。对于其他一些东西,(比如卡车)它更有意义,因为“退役”的车辆可能会重新投入使用。
无论如何,我想知道将这些信息放在一张桌子上是否是个好主意,因为它到处重复。如果是的话,任何人都有一个好名字..?简单created_retired_dates
吗?
我有一个工作正常的查询:
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。
有没有其他方法可以缩短这次时间并使查询更快?
没有消息类型不是索引,我不允许更改它。