我想运行一个类似的查询
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查询:
select <second word in text> word, count(*) from table group by word;
Run Code Online (Sandbox Code Playgroud)
mysql中的所有正则表达式示例用于查询文本是否与表达式匹配,但不用于从表达式中提取文本.有这样的语法吗?
我似乎反对这个问题很多,我的数据格式如下:
+----+----------------------+
| 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)
有没有办法做到这一点?什么是这种操作甚至叫做?
我正在尝试执行当前在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)
关于如何解决这个问题的任何想法?或者我可以通过哪种方式获得行号?
我需要得到一个包含前N个正整数的结果集.是否可以仅使用标准SQL SELECT语句来获取它们(不提供任何计数表)?
如果不可能,是否有任何特定的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: …
通过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) 我有一个项目数据集.项目从头到尾更改状态,状态更改的日期记录在表中(表名为"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。我有 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)