【问题标题】:Getting similar rows from Database Table从数据库表中获取相似的行
【发布时间】:2011-04-29 13:20:30
【问题描述】:

你好朋友,我有以下引用表的表结构

我想访问特定 _id(quoteId) 的所有相似报价(具有相同的 author_id 和 category_id)

之前

类似引号表示该表的所有行的所有列具有相同的 category_id 相同的 author_id。如果两个引用的作者相同且类别相同,则可以认为它们相似。

所以我为此使用以下查询

 SELECT `related_quote`.* FROM
     `quote` AS `main_quote` LEFT JOIN 
    `quote` AS `related_quote`
     USING(`author_id`, `category_id`)
    WHERE `main_quote`.`_id` = QUOTE_ID

但现在对于一些其他要求,类似引号的定义略有变化

类似引号表示该表的所有这些行的所有列具有相同的 category_id 相同的 author_id。如果两个引用的作者相同且类别相同,则可以认为它们相似。

请帮我创建 OR 条件的查询 谢谢你的建议

【问题讨论】:

  • 我应该将 using 子句替换为 ON
  • 是的,你应该这样做。

标签: php mysql sql


【解决方案1】:
SELECT related_quote.*
FROM quote AS main_quote
  LEFT JOIN quote AS related_quote
    ON (related_quote.author_id = main_quote.author_id OR
        related_quote.category_id = main_quote.category_id)
WHERE main_quote._id = main_quote._ID

【讨论】:

    【解决方案2】:

    你可以使用类似的东西

    SELECT
      t1.column1,
      t1.column2,
      t2.column1,
      t2.column2,
      t3.column1,
      t3.column2
    FROM t1
      LEFT JOIN t2 ON (t2.ForeignKey = t1.primaryKey)
      LEFT JOIN t3 ON (t3.foreignKey = t2.PrimaryKey)
    WHERE t1.columnName = 'somevalue';
    

    【讨论】:

      猜你喜欢
      • 2012-12-06
      • 2012-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多