程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了从 mysql 表中获取未关联的 field_name大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决从 mysql 表中获取未关联的 field_name?

开发过程中遇到从 mysql 表中获取未关联的 field_name的问题如何解决?下面主要结合日常开发的经验,给出你关于从 mysql 表中获取未关联的 field_name的解决方法建议,希望对你解决从 mysql 表中获取未关联的 field_name有所启发或帮助;

我有如下表格,

表 1:

ID FIELD_name
1 field_1
2 fIEld_2
3 fIEld_3

表 2:

ID TAG_name
1 tag_1
2 tag_2
3 tag_3
4 tag_4

表 3:

FIELD_ID TAG_ID
1 1
1 2
1 3
2 1
3 2
3 3

所以表 3 显示:

fIEld1(from table1) 与 table-2 的所有 3 个标签 ID 相连

fIEld2(from table1) 与 table-2 的所有标签 ID=1 相连

fIEld3(from table1) 与 table-2 的所有标签 ID=2,3 相连

我喜欢写一个 @H_983_5@mysqL 查询来获取

对于给定的 tag_name,查找与此无关的所有字段名称

例:

输入 = tag_1

输出 = fIEld_3

说明:因为 fIEld_3 与 tag_1 ID 没有任何关系


输入 = tag_4

输出 = field_1、fIEld_2、fIEld_3

说明:因为没有字段与 tag_4 ID 有任何关系


解决方法

您可以使用 CROSStable1table2 联接和 LEFT 联接 yo table3 来实现,您可以在其中返回不匹配的行:>

SELECT t2.TAG_NAME,t1.FIELD_NAME
FROM table1 t1 CROSS JOIN table2 t2
LEFT JOIN table3 t3 ON t3.FIELD_ID = t1.ID AND t3.TAG_ID = t2.ID
WHERE t2.TAG_NAME = ? AND t3.FIELD_ID IS NULL

如果您希望结果为逗号分隔的列表,您还可以按 TAG_NAME 分组并使用 GROUP_CONCAT()

SELECT t2.TAG_NAME,GROUP_CONCAT(t1.FIELD_Name) fields
FROM table1 t1 CROSS JOIN table2 t2
LEFT JOIN table3 t3 ON t3.FIELD_ID = t1.ID AND t3.TAG_ID = t2.ID
WHERE t2.TAG_NAME = ? AND t3.FIELD_ID IS NULL
GROUP BY t2.TAG_NAME

? 替换为您搜索的标签。

参见demo。

,

您可以检查某些链接表条目不存在的字段...

SELECT
  *
FROM
  table1
WHERE
  NOT EXISTS (
    SELECT *
      FROM table3
     WHERE field_id = table1.id
       AND   tag_id = (SELECT id FROM table2 WHERE tag_name = 'tag_4')
  )

(请原谅打字错误,我正在打电话。)

从@nbk 借来的 dbfiddle:here

大佬总结

以上是大佬教程为你收集整理的从 mysql 表中获取未关联的 field_name全部内容,希望文章能够帮你解决从 mysql 表中获取未关联的 field_name所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。