小编val*_*lex的帖子

sql server中的子查询v/s内连接

我有以下疑问

第一个使用内连接

SELECT item_ID,item_Code,item_Name 
FROM [Pharmacy].[tblitemHdr] I 
    INNER JOIN  EMR.tblFavourites F ON I.item_ID=F.itemID
WHERE F.doctorID = @doctorId AND F.favType = 'I'
Run Code Online (Sandbox Code Playgroud)

第二个使用子查询

SELECT item_ID,item_Code,item_Name from [Pharmacy].[tblitemHdr]
WHERE item_ID IN
(SELECT itemID FROM EMR.tblFavourites
WHERE doctorID = @doctorId AND favType = 'I'
)
Run Code Online (Sandbox Code Playgroud)

在此项目表中[Pharmacy].[tblitemHdr]包含15列和2000条记录.并[Pharmacy].[tblitemHdr]包含5列和大约100条记录.在这种情况下which query gives me better performance?

sql performance query-optimization sql-server-2012

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

mysql显示每行中其他表的行数

select `personal`.`id` AS `id`,
`personal`.`name` AS `name`,
(select count(visit.id) 
      from visit,personal 
        where visit.user_id=personal.id) as count 
from personal;
Run Code Online (Sandbox Code Playgroud)

我试图让所有用户和他们所做的访问次数.

我得到的结果是所有用户,但count列包含相同的值(不是特定于该行id).

我在这做错了什么?如何告诉mysql用户这个行id?

是复合选择最佳方式还是有更好的方法?

mysql select count

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

将两个表从第一个日期开始连接到第二个日期范围内

我有两个如下表(日期格式:yyyy-MM-dd):
1)Table1 - EMPLOYEE_OVERTIMES(别名:EO)

EMPLOYEE_ID | OVERTIME_DATE
------------------------------------------------
1           | 2012-04-01
2           | 2012-08-14
3           | 2012-07-22
4           | 2012-10-30
5           | 2012-06-07
Run Code Online (Sandbox Code Playgroud)

2)表2 - EMPLOYEE_HOLIDAYS(别名:EH)

EMPLOYEE_ID | START_DATE | END_DATE   |
-----------------------------------------
1           | 2012-03-28 | 2012-04-10
2           | 2012-01-14 | 2012-01-30
3           | 2012-07-15 | 2012-07-25
4           | 2012-10-10 | 2012-10-13
5           | 2012-06-01 | 2012-06-07
Run Code Online (Sandbox Code Playgroud)

表 EMPLOYEE_OVERTIMES 和 EMPLOYEE_HOLIDAYS 是从其他表联接的。我想查找满足以下条件的所有记录:EH.START_DATE <= EO.OVERTIME_DATE <= EH.END_DATE

3)结果表

EMPLOYEE_ID | START_DATE | END_DATE   | OVERTIME_DATE
-------------------------------------------------------
1           | 2012-03-28 | …
Run Code Online (Sandbox Code Playgroud)

sql sql-server join date intervals

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

使用IN()子句生成Filesort

我有一个简单的表 - >

id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY
by_id INT UNSIGNED NOT NULL
posted_on INT UNSIGNED NOT NULL
Run Code Online (Sandbox Code Playgroud)

我的桌面引擎是MyISAM.

我呼吁多列索引combo1by_id,posted_on,id

我运行这个查询 - >

EXPLAIN SELECT * FROM books 
        WHERE by_id = '1' AND posted_on = '0' 
        ORDER BY id DESC LIMIT 7;
Run Code Online (Sandbox Code Playgroud)

Extra柱说,Using where和键列说combo1

但是,当我运行此查询 - >

EXPLAIN SELECT * FROM books 
        WHERE by_id IN(1,7,10) AND posted_on = '0' 
        ORDER BY id DESC LIMIT 7;
Run Code Online (Sandbox Code Playgroud)

Extra …

mysql explain filesort

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

转换HH:MM:SS

我正在制作一个电话报告但是我遇到了麻烦.我需要计算一个代理人在电话上花了多长时间,源数据是HH:MM:SS的呼叫持续时间.如同在1小时12分10秒内一样几秒钟.因此,如果2个代理人接听了2个电话,那么花费的时间就会计算在那一天.

是否可以将其更改为秒?或者任何人都可以提出更好的建议?

sql sql-server time sql-server-2008

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

MySQL按月和年过滤结果

我的表格显示了各个国家/地区的搜索量以及拍摄日期,我想要一个查询,向我展示2012年和2013年每个月的搜索量,我需要在月份中添加单独的列,年份和搜索次数.我以前使用下面的查询返回每周搜索量,但我想将其更改为2012年和2013年每个月的搜索量.

SELECT COUNT(*) as `count`,
      `region`, 
       DATE(NOW()) as `week_ending` 
   FROM my_stores.stats 
        WHERE `date` > DATE_ADD(DATE(NOW()), INTERVAL -1 WEEK) 
               AND 
              `date` < DATE(NOW()) 
 GROUP BY `region`, DATE(NOW());
Run Code Online (Sandbox Code Playgroud)

mysql sql database

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

如何从mysql中的子查询返回零而不是空

我创建了一个查询,当从子查询返回 null 时,我想返回 0,我使用了 IFNULL 函数,但最后我仍然得到 null。下面是一个类似的查询,请帮忙,不知道该怎么办。(PS:我是用手机写的所以mu格式可能不好看,抱歉)

SELECT t1.id, t1.Amount, t1.parent, 
      ( SELECT @Total := IFNULL(SUM(t2.amount), 0) AS amount FROM transactions t2 WHERE t1.`id` = t2.parent GROUP BY t2.parent ) AS AmountRepaid, 
      ( SELECT CASE WHEN CAST(SUM(t3.amount) AS DECIMAL) > CAST(t1.amount AS DECIMAL) THEN "Over" WHEN CAST(SUM(t3.amount) AS DECIMAL) = CAST(t1.amount AS DECIMAL) THEN "Complete" ELSE "Incomplete" END FROM transactions t3 WHERE t1.`id` = t3.Parent GROUP BY t3.Parent ) AS PaymentStatus 
      FROM transactions t1 WHERE t1.`Parent` IS NULL;
Run Code Online (Sandbox Code Playgroud)

mysql sql

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

需要将输出作为正数和负数从一列到单个表中的不同列

我需要针对以下场景的解决方案:

TABLE A:
col1
1
-1
6
-5
2
4
-2
5
Run Code Online (Sandbox Code Playgroud)

我希望OUTPUT为:

POSITIVE     NEGATIVE
1            -1
2            -2
4            NULL
5            -5
6            NULL
Run Code Online (Sandbox Code Playgroud)

sql sql-server-2008

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

在列中获取CSV列表,保持列不同(SQL)

我需要帮助编写一个SQL查询,它可以让我得到我想要的结果.

我有一个文档上传功能,可以在多个位置为客户端上传文档.表结构简单,只有5列; FileID,FileName,Title,Description和LocationID.如果用户上传3个位置的文档,则会在此表中输入3个条目.让我们说

FileID FileName    Title      Description      LocationID
1      File1       File1      Description 1    100
2      File1       File1      Description 1    21
4      File1       File1      Description 1    181

用户上传4个位置的另一个文件,输入数据,表格现在如下所示

FileID FileName    Title      Description      LocationID
1      File1.doc   File1      Description 1    100
2      File1.doc   File1      Description 1    21
4      File1.doc   File1      Description 1    181
5      File2.pdf   File2      Description 2    123
6      File2.pdf   File2      Description 2    12
7      File2.pdf   File2      Description 2    126
8      File2.pdf   File2      Description 2    100

现在我想要的结果是

FileName    Title      Description      LocationCSV
File1.doc …

sql sql-server

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

在mysql中获取朋友列表

我有一张像这样的桌子:

friend : (userid , friendid)
Run Code Online (Sandbox Code Playgroud)

因此,如果user_a与成为朋友user_b,我会将下面的行加载到表中

user_a , user_b
Run Code Online (Sandbox Code Playgroud)

而且我不插入usar_b , user_a表。

那么我如何通过mysql查询获得user_b的朋友列表呢?

mysql sql sql-server

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

使用sqlite进行三重联接

假设我们有3个表格:

table1:名字,id

table2:编号,姓氏

table3:姓氏,身高

我们要显示:名字,身高

我可能会使用完全连接:

select firstname, height from
(select firstname, lastname ln from table1 
                               full join table2 on table1.id=table2.id)
full join table3 on ln=table3.lastname
Run Code Online (Sandbox Code Playgroud)

但是在sqlite中,不存在完全联接和正确联接,因此我需要一些如何使用联合来获得联接的方法。有什么想法,怎么做?

sql sqlite join

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

mysql sytax错误附近的if conditiion

DELIMITER $

DROP PROCEDURE IF EXISTS discount$
CREATE PROCEDURE discount(IN price INT, OUT price_after_discount INT)
BEGIN
  IF (price<100) THEN
       SET price_after_discount=price;
  ELSEIF(price>100 AND price<200) THEN
      SET price_after_discount=(price*0.10)+price;
  ELSE
     SET price_after_discount=(price*0.20)+price;
   END IF;
END$
DELIMITER;
Run Code Online (Sandbox Code Playgroud)

Mysql告诉我第9行有错误:

1064 - 您的SQL语法出错; 检查与MySQL服务器版本对应的手册,以便在第1行的"DELIMITER"附近使用正确的语法

为什么我有错误?我做错了什么?

mysql

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