You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MySQL单条查询语句中同时选择指定列与通配符?

如何在MySQL关联查询中同时选取指定列与通配符

嘿,这个问题其实挺常见的,咱们直接说解决方案和注意点就行~

你的原语句里直接写*会同时拉取submissions和orders两个表的所有列,而且你已经单独指定了orders.user_id并取别名orderuserid,这会导致结果里出现重复的user_id列(一个是别名的,一个是原列),甚至可能因为列名歧义引发问题。

正确的做法是给通配符*加上表名/表别名的限定,明确你要拉取哪个表的所有列,这样就能和指定列共存且不冲突。

示例写法(推荐)

如果你想获取orders.user_id(别名orderuserid)加上submissions表的所有列,语句应该改成这样:

SELECT orders.user_id as orderuserid, submissions.* 
FROM submissions 
INNER JOIN orders ON orders.listing_id = submissions.listing_id 
WHERE orders.user_id = [你的目标用户ID]; -- 这里补充你的具体ID值

如果需要同时获取两个表的所有列,再加上指定的别名列,可以这么写:

SELECT orders.user_id as orderuserid, submissions.*, orders.* 
FROM submissions 
INNER JOIN orders ON orders.listing_id = submissions.listing_id 
WHERE orders.user_id = [你的目标用户ID];

不过要注意:这样会导致orders.user_id重复出现一次(一次是别名orderuserid,一次是原orders.user_id),如果不需要重复列,建议只保留需要的表的*。

关键注意点

  • 关联多表时,永远不要直接用裸*,否则容易出现列名重复、返回冗余数据的问题,用表名.*能明确范围。
  • 生产环境中,除非确实需要表的所有列,否则最好明确列出需要的字段,避免表结构变更后引发应用层异常。

内容的提问来源于stack exchange,提问作者devloper

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:18:49