我有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) 我正在codeigniter用FIND_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"是额外的,它是非常烦人的.任何人都可以告诉为什么这与查询一起出现?谢谢..
我想根据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 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) 我知道我可以使用 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)
获取8其categories列中的记录(其中包含逗号分隔的类别 ID)
但我也得到没有类别 ID 的记录。
我哪里出错了?
我正在使用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) 我将这样存储的值存储在字段中1,255,230,265。
MySQL中是否有一个函数可以为我提供该字符串中的第二个值?在这种情况下会是255。
我尝试使用locate,但这似乎并不意味着这样做。
我有以下查询:
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) 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函数
所以我有一个设计糟糕的数据库(我认为),我无法改变.它是一个类似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) find-in-set ×10
mysql ×7
sql ×6
select ×4
group-concat ×2
codeigniter ×1
equivalent ×1
in-clause ×1
laravel ×1
left-join ×1
partitioning ×1
php ×1
postgresql ×1
sql-like ×1