【问题标题】:What is the expression that will always be true while using SQL WHERE IN comparison query使用 SQL WHERE IN 比较查询时始终为真的表达式是什么
【发布时间】:2017-03-01 00:48:45
【问题描述】:
SELECT *  
FROM TABLE_X  
WHERE 'Value' IN (SELECT * FROM TABLE_Y)  

我可以使用什么表达式代替“值”,以便 WHERE 子句始终返回 true?

我正在尝试做类似的事情:

WHERE (SELECT field FROM TABLE_Y) LIKE '%Value%'

【问题讨论】:

  • 你的RDBMS是mysql还是sql server?
  • 为什么不直接删除WHERE 子句?
  • 如果您需要始终返回 true,则使用 1 = 1 或根本不使用 where 子句。但是比较valueTable_Y,我认为你应该更清楚地解释你的要求。

标签: mysql sql sql-server


【解决方案1】:

找到解决办法,用EXISTS代替WHERE IN

SELECT *  
FROM TABLE_X   
WHERE EXISTS (SELECT field FROM TABLE_Y WHERE field LIKE '%Value%') 

【讨论】:

    【解决方案2】:

    您不能将您的“值”与 * 进行比较,您需要 TABLE_Y 中的指定字段,例如:

    SELECT * 
    FROM TABLE_X
    WHERE (SELECT Field FROM TABLE_Y WHERE Field LIKE '%Value%' LIMIT 1) IS NOT NULL
    

    【讨论】:

      【解决方案3】:

      不知道是不是我理解的好,做如下很傻,但是返回了TABLE_X中的所有记录:

      SELECT *
      FROM TABLE_X 
      WHERE 1 IN (SELECT field FROM TABLE_Y) 
      

      注意:...IN (SELECT * ...) 崩溃是因为您应该只选择一列,这就是我写field 而不是* 的原因

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多