标签: find-in-set

MySQL使用逗号分隔值连接两个表

我有2个表格如下

备注表

??????????????????????????????
? nid      ?    forDepts     ?
??????????????????????????????
? 1        ? 1,2,4           ?
? 2        ? 4,5             ?
??????????????????????????????
Run Code Online (Sandbox Code Playgroud)

职位表

??????????????????????????????
? id       ?    name         ?
??????????????????????????????
? 1        ? Executive       ?
? 2        ? Corp Admin      ?
? 3        ? Sales           ?
? 4        ? Art             ?
? 5        ? Marketing       ?
??????????????????????????????
Run Code Online (Sandbox Code Playgroud)

我希望查询我的Notes表并将'forDepts'列与Positions表中的值相关联.

输出应该是:

    ?????????????????????????????????????????
    ? 1        ? Executive, Corp Admin, Art ?
    ? 2        ? Art, Marketing             ?
    ?????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)

我知道数据库应该规范化,但我无法更改此项目的数据库结构.

这将用于导出带有以下代码的excel文件.

<?PHP

    $dbh1 = mysql_connect($hostname, $username, …
Run Code Online (Sandbox Code Playgroud)

php mysql left-join group-concat find-in-set

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

Codeginter $ this-> db-> where()函数在使用find_in_set()函数时自动在查询中查询"IS NULL"

我正在codeigniterFIND_IN_SET()函数编写查询.

   $this->db->where(FIND_IN_SET('".$value."',employer_job_location));
    $query_res= $this->db->get("employer_posted_jobs");
   echo $this->db->last_query(); exit;
Run Code Online (Sandbox Code Playgroud)

它正在屈服

SELECT * 
FROM (`employer_posted_jobs`) 
WHERE (FIND_IN_SET('Delhi',employer_job_location)) IS NULL
Run Code Online (Sandbox Code Playgroud)

在上面的查询"IS NULL"是额外的,它是非常烦人的.任何人都可以告诉为什么这与查询一起出现?谢谢..

codeigniter find-in-set

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

从表中选择Multiple Ids

我想根据url字符串选择一些id,但是我的代码只显示第一个.如果我写手册的id's它很棒.

我有这样的网址http://www.mydomain.com/myfile.php?theurl=1,2,3,4,5(ids)

现在在myfile.php我有我的sql连接和:

$ids = $_GET['theurl']; (and i am getting 1,2,3,4,5)

如果我使用这个:

$sql = "select * from info WHERE `id` IN (1,2,3,4,5)";
$slqtwo = mysql_query($sql);
while ($tc = mysql_fetch_assoc($slqtwo)) {
    echo $tc['a_name'];
    echo " - ";
}
Run Code Online (Sandbox Code Playgroud)

我得到了正确的结果.现在,如果我使用下面的代码,它不起作用:

$sql = "select * from info WHERE `id` IN ('$ids')";
$slqtwo = mysql_query($sql);
while ($tc = mysql_fetch_assoc($slqtwo)) {
    echo $tc['a_name'];
    echo " - ";
}
Run Code Online (Sandbox Code Playgroud)

有什么建议?

mysql sql select in-clause find-in-set

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

MySQL:无法从特定分区中选择记录?

我正在使用MySQL 5.6.我创建了一个包含366个分区的表,以便每天保存数据意味着在一年中我们最多有366天,因此我在该表上创建了366个分区.散列分区由整数列管理,每个记录存储1到366个整数列.

Report_Summary表:

CREATE TABLE `Report_Summary` (
  `PartitionsID` int(4) unsigned NOT NULL,
  `ReportTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `Amount` int(10) NOT NULL,
  UNIQUE KEY `UNIQUE` (`PartitionsID`,`ReportTime`),
  KEY `PartitionsID` (`PartitionsID`),
  KEY `ReportTime` (`ReportTime`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPRESSED
/*!50100 PARTITION BY HASH (PartitionsID)
PARTITIONS 366 */
Run Code Online (Sandbox Code Playgroud)

我目前的查询:

SELECT DATE(RS.ReportTime) AS ReportDate, SUM(RS.Amount) AS Total
FROM Report_Summary RS
WHERE RS.ReportTime >= '2014-12-26 00:00:00' AND RS.ReportTime <= '2014-12-30 23:59:59' AND 
      RS.PartitionsID BETWEEN DAYOFYEAR('2014-12-26 00:00:00') AND DAYOFYEAR('2014-12-30 23:59:59')
GROUP BY ReportDate; …
Run Code Online (Sandbox Code Playgroud)

mysql sql select partitioning find-in-set

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

在 laravel where 子句中使用 find_in_set()

我知道我可以使用 find_in_set ,如下所示:

select `id` from `questions` where FIND_IN_SET(8, categories);
Run Code Online (Sandbox Code Playgroud)

但我正在使用 laravel,我想在那里编写这个查询。我已经尝试过这个:

$q_category = 8;
$object = DB::table("questions")
  ->select('id')
  ->where(DB::RAW("FIND_IN_SET($q_category, categories)"), '!=', null)
  ->get();
Run Code Online (Sandbox Code Playgroud)

获取8categories列中的记录(其中包含逗号分隔的类别 ID)

但我也得到没有类别 ID 的记录。

我哪里出错了?

laravel find-in-set

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

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在逗号分隔的集合中找到一个值

我将这样存储的值存储在字段中1,255,230,265

MySQL中是否有一个函数可以为我提供该字符串中的第二个值?在这种情况下会是255

我尝试使用locate,但这似乎并不意味着这样做。

mysql sql select sql-like find-in-set

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

使用带有散列值的 FIND_IN_SET 我的 sql 函数

我有以下查询:

SELECT url, url_hash from pages WHERE url_hash IN (SHA1('URL1'), SHA1('URL2'), SHA1('URL3'))
ORDER BY FIND_IN_SET(url_hash, "SHA1('URL1'), SHA1('URL2'), SHA1('URL3')")
Run Code Online (Sandbox Code Playgroud)

我会保持结果集的顺序与 IN 子句中参数的顺序相同。

我发现了这个问题

问题是 mysql 不知道如何解释一组 SHA1 函数,如果我将它们作为字符串传递,它们不会被正确计算,如果我传递给它们一个表达式(不带引号),我会收到以下错误:

OperationalError: (1582, "Incorrect parameter count in the call to native function 'FIND_IN_SET'")
Run Code Online (Sandbox Code Playgroud)

mysql sql find-in-set

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

mysql FIND_IN_SET相当于postgresql

select * 
from folder f,uploads u 
where u.id=f.folderId 
and FIND_IN_SET('8', '15,9,13,27')
Run Code Online (Sandbox Code Playgroud)

请告诉我相当于predefind或userdefined postgresql函数

postgresql equivalent find-in-set

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

选择列具有特定ID的所有行

所以我有一个设计糟糕的数据库(我认为),我无法改变.它是一个类似Twitter的应用程序,用户可以互相关注.每个用户在表中都有它的行,并且在该表中有一个名为"following"的列,表示用户正在关注的所有USERID.在该列中,有一个用昏迷分隔的USERID列表.因此,假设ID为1的用户跟随用户2和3,ID为2的用户跟随用户1,表格看起来像这样,用户3不跟随任何人.

USERID  |  username         |  following  
-------------------------------------------
1       |  some user        |  2,3                
2       |  test1            |  1                
3       |  test2            |         
Run Code Online (Sandbox Code Playgroud)

问题是如何显示用户1正在关注的所有用户?

编辑1

从491243无效的代码,在这里张贴,也许我错过了一些PHP的东西

$USERID = $_GET['userid'];//this has a value, so not the problem here
$sql_select = "SELECT B.USERID FROM users A INNER JOIN users B ON FIND_IN_SET(B.USERID, B.following) > 0 WHERE B.USERID = '$USERID'";
$result_select = mysqli_query($link,$sql_select);
while($record = mysqli_fetch_array($result_select))
{
    $following = $record['USERID'];
    var_dump($following); //result is nothing, not even NULL
}
Run Code Online (Sandbox Code Playgroud)

编辑2只是为了理智检查我这样做:

 $sql_select = "SELECT USERID FROM …
Run Code Online (Sandbox Code Playgroud)

mysql sql find-in-set

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