【问题标题】:Mysql search in 2 tables left joinMysql在2个表中搜索左连接
【发布时间】:2013-09-20 08:42:00
【问题描述】:

我有 2 张桌子。
像这样的:

uin |名字

另一个是这样的:

tag_uin | uin_item |标记名

我想找到所有带有我想要的标签的 uin,像这样:

"SELECT nir_parts.name, nir_ntag.* FROM `nir_parts`
LEFT JOIN `nir_ntag` ON nir_parts.uin = nir_ntag.uin_item 
WHERE nir_ntag.uin = 212 AND WHERE nir_ntag.uin = 313 
ORDER BY RAND() LIMIT 11"

由于某种原因,这不起作用... 请帮忙。

提前致谢。

【问题讨论】:

    标签: php mysql sql tags


    【解决方案1】:

    要么使用OR搜索2个标签,要么使用IN()

    SELECT nir_parts.name, nir_ntag.* 
    FROM nir_parts 
    LEFT JOIN nir_ntag ON nir_parts.uin = nir_ntag.uin_item 
    WHERE nir_ntag.uin in (212, 313)
    ORDER BY RAND() 
    LIMIT 11
    

    一条记录不能同时有两个标签。

    如果您只需要包含两个标签的记录,您可以这样做

    SELECT nir_ntag.uin_item 
    FROM nir_parts 
    LEFT JOIN nir_ntag ON nir_parts.uin = nir_ntag.uin_item 
    WHERE nir_ntag.uin in (212, 313)
    group by nir_ntag.uin_item
    having count(distinct nir_ntag.uin) = 2
    

    【讨论】:

    • 但是在表格中的“标签”是这样的:uin_item(123), tag_uin(5) uin_item(123), tag_uin(6) 所以一个uin_item可以有2个标签。
    • 是,但不在同一 。如果您只需要两个标签都存在的记录,则必须围绕 uin_item 对数据进行分组。
    • 对此有何帮助?教程也很棒。
    猜你喜欢
    • 1970-01-01
    • 2015-11-04
    • 2011-12-26
    • 1970-01-01
    • 2012-08-23
    • 2011-06-30
    • 2018-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多