相关疑难解决方法(0)

从日期范围生成天数

我想运行一个类似的查询

select ... as days where `date` is between '2010-01-20' and '2010-01-24'
Run Code Online (Sandbox Code Playgroud)

并返回如下数据:

days
----------
2010-01-20
2010-01-21
2010-01-22
2010-01-23
2010-01-24

mysql sql datetime between

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

如何在MySQL字符串中提取第n个单词并计算单词出现次数?

我想有一个像这样的mysql查询:

select <second word in text> word, count(*) from table group by word;
Run Code Online (Sandbox Code Playgroud)

mysql中的所有正则表达式示例用于查询文本是否与表达式匹配,但不用于从表达式中提取文本.有这样的语法吗?

regex mysql word-count

58
推荐指数
7
解决办法
11万
查看次数

MySQL中GROUP_CONCAT的反义词是什么?

我似乎反对这个问题很多,我的数据格式如下:

+----+----------------------+
| id | colors               |
+----+----------------------+
| 1  | Red,Green,Blue       |
| 2  | Orangered,Periwinkle |
+----+----------------------+
Run Code Online (Sandbox Code Playgroud)

但我希望它的格式如下:

+----+------------+
| id | colors     |
+----+------------+
| 1  | Red        |
| 1  | Green      |
| 1  | Blue       |
| 2  | Orangered  |
| 2  | Periwinkle |
+----+------------+
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?什么是这种操作甚至叫做?

mysql csv format pivot group-concat

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

是否可以在.NET MySqlCommand中使用MySql用户定义变量?

我正在尝试执行当前在phpMyAdmin中运行的查询,但是在使用MySqlAdapter在.NET中执行它时它不起作用.这是Sql语句.

SELECT @rownum := @rownum +1 rownum, t . *
FROM (
  SELECT @rownum :=0
) r, (
  SELECT DISTINCT
    TYPE FROM `node`
  WHERE TYPE NOT IN ('ad', 'chatroom')
)t     
Run Code Online (Sandbox Code Playgroud)

它使用@rownum对从内部标量查询返回的每个不同行进行编号.但是如果我在.NET中使用它,它假设@rownum是一个参数并抛出异常,因为我没有定义它.

using (var sqlConnection = new MySqlConnection(SOURCE_CONNECTION))
{
    sqlConnection.Open();

    MySqlDataAdapter sqlAdapter = new MySqlDataAdapter(SqlStatement, sqlConnection);

    DataTable table = new DataTable();
    sqlAdapter.Fill(table);
    sqlConnection.Close();

    return table;
}
Run Code Online (Sandbox Code Playgroud)

关于如何解决这个问题的任何想法?或者我可以通过哪种方式获得行号?

.net c# mysql

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

SQL SELECT获取前N个正整数

我需要得到一个包含前N个正整数的结果集.是否可以仅使用标准SQL SELECT语句来获取它们(不提供任何计数表)?

如果不可能,是否有任何特定的MySQL方法来实现这一目标?

mysql sql

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

如何从MySQL表的多个列中获取指定最小长度的所有不同单词?

在MySQL 5.6数据库,我有表tablename已经(包括人)三TEXT列:col_a, col_b, col_c

我想从这三列中提取至少5个字符的所有唯一单词(单词之间用空格分隔)。“单词”是指任何非空格字符字符串,例如“ foo-123”和“ 099423”都是单词。这些列都是utf8格式的InnoDB列。

是否有单个查询可以执行此操作?

编辑:根据要求,下面是一个示例:(在实际数据中,col_a,col_b和col_c是TEXT字段,可能包含大量单词。)

select id, col_a, col_b, col_c from tablename;

id  | col_a              | col_b          | col_c
----|--------------------|----------------|----------------------
1   | apple orange plum  | red green blue | bill dave sue
2   | orange plum banana | yellow red     | frank james
3   | kiwi fruit apple   | green pink     | bill sarah-jane frank

expected_result: ["apple", "orange", "banana", "fruit", 
                  "green", "yellow", "frank", "james", "sarah-jane"]
Run Code Online (Sandbox Code Playgroud)

我不在乎结果的顺序。谢谢!

编辑:在上面的示例中,所有内容都是小写字母,因为这就是我将所有内容存储在与该问题相关的真实表中的方式。但是,为了争辩,如果它确实包含一些大写字母,我希望查询忽略大写字母(这是我的数据库配置的设置)。

EDIT2:如果有帮助,则所有文本列上均具有FULLTEXT索引。

EDIT3:这是创建示例数据的SQL: …

regex mysql sql text

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

在MySQL中获取最后插入的IDS

通过ONE查询在MySQL中多次插入后,是否可以获得所有插入的ID?实施例(摘要):

$ids = array();
$parts = array();
$query = 'INSERT INTO `TABLENAME` (`FIELDS`)  VALUES'; 

$items = array(values);
foreach($items as $item){
   $parts[] = '('.$item['key1'].','.$item['key2']...','.$item['keyN'].')';
}

$query .= implode(',',$parts);
mysqli_query($link,$query);
$ids = ... // getting  ALL inserted IDs
var_dump($ids);
Run Code Online (Sandbox Code Playgroud)

它可以在这里(解决方案之一)这样做.实施例(摘要):

$ids = array();

$items = array(values);
foreach($items as $item){
   $query ='INSERT INTO `TABLENAME` (`FIELDS`)  VALUES('.$item['key1'].','.$item['key2']...','.$item['keyN'].')';
   mysqli_query($link,$query);
   $ids[] = mysqli_insert_id($link);
}
var_dump($ids);  
Run Code Online (Sandbox Code Playgroud)

但是,我想:一个查询INSERT所有项目 - 一个查询获取所有插入的ID.

UPDATE

我的解决方案(基于问题在MySQL中生成一个整数序列).通过单个查询返回最后插入的ID的序列.

$query_inserted_ids = "SELECT @row := @row +1 AS row_id
                       FROM TABLENAME , (SELECT @row …
Run Code Online (Sandbox Code Playgroud)

php mysql

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

MySQL填写给定状态的两个日期之间缺少日期

我有一个项目数据集.项目从头到尾更改状态,状态更改的日期记录在表中(表名为"events" - 不是我的选择).看起来像这样(简化):

Date        Status
2015-06-01  Start
2015-06-03  Stage 2
2015-06-07  Stage 3
Run Code Online (Sandbox Code Playgroud)

在任何给定的日期范围内(动态确定),我希望能够看到哪些项目处于哪种状态.但是,对数据使用BETWEEN或其他查询只会提取那些在此期间状态发生变化的项目,而不是那些仍处于给定状态的项目.

我目前在Excel中创建了一个非常笨重的解决方案,它将行复制到状态更改日期之间的新行中,如下所示:

Date          Status  
2015-06-01    Project start
2015-06-02    Project start (copied)
2015-06-03    Stage 2 
2015-06-04    Stage 2 (copied)
2015-06-05    Stage 2 (copied)
2015-06-06    Stage 2 (copied)
2015-06-07    Stage 3
Run Code Online (Sandbox Code Playgroud)

此解决方案允许我在2015-06-06上查询项目的状态,并查看它仍处于第2阶段.

有什么方法可以使用mySql来提取相同的数据,但作为输出查询?我听说有人建议使用Calendar表,但我不确定它是如何工作的.我也看到有人推荐一个Cross Join,但是再一次,我从描述中无法理解它是如何工作的.

在此先感谢您的帮助!

mysql date

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

MySQL选择查询以根据列表值获取记录

我正在使用MySQL。我有 3 个表如下。

表:subject_Master

--------------------------
subjectId   | subjectShortName
----------------------------------
1           |   English
2           |   French
3           |   German
4           |   Latin
----------------------------------
Run Code Online (Sandbox Code Playgroud)

表:class_Master

-----------------------------------
classId     | className
----------------------------------
1           |   Rose
2           |   Dasy
3           |   Lily
Run Code Online (Sandbox Code Playgroud)

表:主题分配

------------------------------------------
allocationId    |   classId |   subjectId
-------------------------------------------
1               |   1       |   1,2
2               |   2       |   2,3,4
3               |   3       |   1,2,3,4
Run Code Online (Sandbox Code Playgroud)

我如何获得 SQL 结果如下,想要获取 subjectAllocation 行中每个 subjectId 的 subjectName

ClassName   |   SubjectName
-------------------------------------------
Rose        |   English,French
Dasy        |   French,German,Latin
Lily        | …
Run Code Online (Sandbox Code Playgroud)

mysql sql select group-concat find-in-set

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

标签 统计

mysql ×9

sql ×4

group-concat ×2

regex ×2

.net ×1

between ×1

c# ×1

csv ×1

date ×1

datetime ×1

find-in-set ×1

format ×1

php ×1

pivot ×1

select ×1

text ×1

word-count ×1