首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用于交叉表选择的MySql查询

用于交叉表选择的MySql查询
EN

Stack Overflow用户
提问于 2011-05-14 01:11:17
回答 3查看 1.7K关注 0票数 0

软件包: package_id、user_id

事务: product_id、user_id、package_id

我希望在具有package_id null或0的事务中选择行,但只有当存在具有相同user_id的其他事务时,包id大于0才是可能的。很抱歉我的英文不好。我试着用Google搜索它,但没能猜出Google查询的正确问题。

我知道这个标题不好,所以请大家推荐一个更好的标题。

Gwynnbleid1

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-05-14 01:20:38

也许这...我会不惜一切代价避免子选择,所以它可能会变得疯狂和有点令人困惑,除非我尝试过,否则我永远不会真正知道它是否有效。

代码语言:javascript
运行
复制
SELECT DISTINCT T.*
FROM   packages P
       LEFT JOIN transactions T
         ON P.user_id = T.user_id
       LEFT JOIN transactions T2
         ON T.user_id = T2.user_id
WHERE  ( T.package_id IS NULL
          OR T.package_id = 0 )
       AND T2.package_id > 0 
票数 1
EN

Stack Overflow用户

发布于 2011-05-14 01:15:38

此查询将为至少有一个具有NULL0 package_id的其他事务的用户提供package_id > 0的所有事务。

代码语言:javascript
运行
复制
SELECT * FROM transactions WHERE user_id IN 
(SELECT user_id FROM transactions WHERE package_id IS NULL OR package_id = 0) 
AND package_id > 0;
票数 0
EN

Stack Overflow用户

发布于 2011-05-14 01:18:13

代码语言:javascript
运行
复制
SELECT A.* FROM

(SELECT * FROM TRANSACTIONS WHERE (package_id = 0 or package_id is null)) A
(SELECT * FROM TRANSACTIONS WHERE package_id is not null) B

WHERE A.userID = B.userID
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5995438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档