MySQL在where子句中选择查询
Posted
技术标签:
【中文标题】MySQL在where子句中选择查询【英文标题】:MySQL select query in where clause 【发布时间】:2013-09-04 02:27:36 【问题描述】:你能纠正这个查询吗?它显示了一些语法错误。
SELECT *
WHERE `id` IN (SELECT DISTINCT unit_trust_managing_company_id
FROM ut_funds
ORDER BY `company_name`)
SELECT DISTINCT unit_trust_managing_company_id FROM ut_funds ORDER BY
company_name` 查询工作正常。
【问题讨论】:
不要引用/反引号你的列名。它们只会增加视觉上的混乱,只是你犯语法错误的另一种方式。您需要它们的唯一原因是如果您有一个保留字的列名,并且使用保留字的列名是一个糟糕的主意,因此您可以同时避免这两个坏习惯。 【参考方案1】:在大多数(所有?)情况下,您可以在不使用 where 子句中的查询的情况下重写查询,并获得更好的性能。尝试类似:
SELECT DISTINCT t.*
FROM some_table t, ut_funds u
WHERE t.id=u.unit_trust_managing_company_id
【讨论】:
【参考方案2】:where
之前需要一个from
子句:
SELECT *
FROM <some table here>
WHERE `id` IN (SELECT unit_trust_managing_company_id FROM ut_funds)
此外,in
语句不需要 distinct
和 order by
。
【讨论】:
如果 "unit_trust_managing_company_id" 的值为 1,2,3.... 这个查询不起作用.... 至少在我的情况下... 请指导如何纠正这个问题。 .. @AsadAliKhan 。 . .你应该问一个问题,而不是评论。在任何情况下,将多个整数值存储在一个字符串中是在 SQL 中存储值的错误方式。您遇到了数据建模问题。以上是关于MySQL在where子句中选择查询的主要内容,如果未能解决你的问题,请参考以下文章
带有 WHERE 子句和 INNER JOIN 的 MySQL 更新查询不起作用