douguan3470 2015-04-13 06:30
浏览 74
已采纳

在Mysql Query中添加Where子句?

I have this mysql query which in fact someone on Stackoverflow gave me. (It selects the two most frequent id's found together in the columns pic1,pic2 and pic3). It works great but now I want to add a WHERE clause to the query so that only rows in my table where a particular ID is present are selected. ie. WHERE pic1 =$loggedin_user OR pic2 = $loggedin_user OR pic3= $loggedin_user Can anyone tell me where the clause would go within the query below?

The Query

SELECT LEAST(p1, p2) AS p1, GREATEST(p1,p2) AS p2
FROM (
  SELECT pic1 AS p1, pic2 AS p2
  FROM mytable WHERE pic1 IS NOT NULL AND pic2 IS NOT NULL
  UNION ALL
  SELECT pic1 AS p1, pic3 AS p2
  FROM mytable WHERE pic1 IS NOT NULL AND pic3 IS NOT NULL
  UNION ALL
  SELECT pic2 AS p1, pic3 AS p2
  FROM mytable WHERE pic3 IS NOT NULL AND pic2 IS NOT NULL
) s
GROUP BY LEAST(p1, p2), GREATEST(p1,p2)
ORDER BY COUNT(*) DESC
LIMIT 1
  • 写回答

1条回答 默认 最新

  • dongxi8993 2015-04-13 07:52
    关注

    (Without checking the query in detail), it would go here:

    SELECT LEAST(p1, p2) AS p1, GREATEST(p1,p2) AS p2
    FROM (
      SELECT pic1 AS p1, pic2 AS p2
      FROM mytable WHERE pic1 IS NOT NULL AND pic2 IS NOT NULL
      UNION ALL
      SELECT pic1 AS p1, pic3 AS p2
      FROM mytable WHERE pic1 IS NOT NULL AND pic3 IS NOT NULL
      UNION ALL
      SELECT pic2 AS p1, pic3 AS p2
      FROM mytable WHERE pic3 IS NOT NULL AND pic2 IS NOT NULL
    ) s
    WHERE pic1 =$loggedin_user OR pic2 = $loggedin_user OR pic3= $loggedin_user
    GROUP BY LEAST(p1, p2), GREATEST(p1,p2)
    ORDER BY COUNT(*) DESC
    LIMIT 1
    

    This is the SELECT definition from the MySQL documentation

    SELECT
    [ALL | DISTINCT | DISTINCTROW ]
      [HIGH_PRIORITY]
      [STRAIGHT_JOIN]
      [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
      [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
    select_expr [, select_expr ...]
    [FROM table_references
    [WHERE where_condition]
    [GROUP BY {col_name | expr | position}
      [ASC | DESC], ... [WITH ROLLUP]]
    [HAVING where_condition]
    [ORDER BY {col_name | expr | position}
      [ASC | DESC], ...]
    [LIMIT {[offset,] row_count | row_count OFFSET offset}]
    [PROCEDURE procedure_name(argument_list)]
    [INTO OUTFILE 'file_name' export_options
      | INTO DUMPFILE 'file_name'
      | INTO var_name [, var_name]]
    [FOR UPDATE | LOCK IN SHARE MODE]]
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题
  • ¥15 FPGA-SRIO初始化失败
  • ¥15 MapReduce实现倒排索引失败
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码
  • ¥50 随机森林与房贷信用风险模型