繁体   English   中英

SQL - 在表格的一列中查找数字的所有实例,并在该行的另一列中显示数据

[英]SQL - Finding all instances of a number in a table in one column and displaying data from another column in that row

我有一个 id 编号从 1 一直到大约 5000 的数据库。每个页面显示来自其相应行的数据,基于页面哈希,使用 ajax 将相关数据加载到每个 div 中。 每行都有一个 varchar 列,用于说明其他哪些项目是相关的。 在每一页上,我想对整个表进行交叉索引以在其他条目中查找相关 id 的实例,并通过链接显示表中该条目的标题(将使用脚本自动生成)。 例如,如果我的 id 是 346,我想为包含对 #346 的引用的任何条目解析“相关”列,并为表中找到的每个实例显示该行的“标题”列中的数据。

所以,我的数据库的选择看起来像这样。

+-------------------+----------------+------------------+------------------+
| id (INT)          | title (VCHAR)  | author (VCHAR)   | relevant (VCHAR) |
+-------------------+----------------+------------------+------------------+
| 346               | title A        | name             | See #2 and #24   |
| 347               | title B        | name             | See #789         |
| 348               | title C        | name             | See #1 and #346  |
| 349               | title D        | name             | See #34 and #224 |
| 340               | title E        | name             | See #34 and #346 |
| 341               | title F        | name             | See #13 and #87  |
| 342               | title G        | name             | See #346 and #600|
| 343               | title H        | name             | See #346 and #808|
 --------------------------------------------------------------------------

所以,基于我的 url hash,这将是#346,我应该看到 output 进入一个看起来像这样的 div

See also:
Title C    Title E     Title G     Title H

这样做的最佳方法是什么? 除了 url hash 之外,使用其他参考会更好吗,因为我已经使用它从数据库中提取了 id?

正如@M.Eriksson 在评论中提到的那样,您的数据库结构是错误的,会导致您的表现不佳。

现在,如果您需要保留当前的数据结构并且性能不重要,您可以通过对每个结果再执行一次查询来解决这个问题:

  • 遍历您的每篇文章,使用正则表达式将所有相关列的#id 提取到数组中。

  • 基于该数组构建一个 SQL 查询:

    SELECT * 来自 your_table WHERE id=id1 OR id=id2 OR id=id3...

(可以使用 function implode轻松完成)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM