鍍金池/ 問答/數(shù)據(jù)庫  HTML/ 數(shù)據(jù)庫sql查詢?

數(shù)據(jù)庫sql查詢?

sql語句 表A 有三個(gè)字段 id,type,value
取出type為101,102的記錄,
但是如果type為102的話需要考慮id對應(yīng)的103屬性值是否滿足3301開頭
請問代碼怎么寫?在線等,挺急的??!謝謝

回答
編輯回答
哚蕾咪

where `type`=101 or (`type`=102 and `value` like'3301%')
是這樣嗎?沒太讀懂問題。

2017年11月22日 02:44
編輯回答
祉小皓

使用子查詢即可,根據(jù)你提供的查詢示例,SQL 語句如下:

SELECT * FROM demo 
  WHERE `type`=101 OR 
        (`type`=102 AND `id` = (
                        SELECT `id` FROM demo  WHERE `type`=103 
                                               AND `id` IN 
                                                        (SELECT dt.id FROM (SELECT * FROM demo WHERE `type`=102) AS dt)
                                               AND `value` like'3301%'
));

查詢效果如下:
006tNc79gy1fl8a6i05h4j30vc0gugnj.jpg

2017年2月13日 09:11
編輯回答
鹿惑

子查詢

SELECT a.Id, a.Type, a.Value
FROM T_A a
WHERE a.Type = 101 OR
    (a.Type = 102 AND a.Id IN
        (SELECT b.Id
        FROM T_A b
            INNER JOIN T_A c ON b.Id = c.Id AND c.Value LIKE '3301%' AND c.Type = 103
        WHERE b.Type = 102)
        )
2017年9月26日 03:04
編輯回答
久不遇

試試這個(gè),思路:

  • 將101和102作為一個(gè)表a
  • 將103不滿足開頭'3301'的記錄作為一個(gè)表b
select t1.type,t1.value from t as t1 left join t as t2 on (t2.id = t1.id AND t2.type = 103 AND t2.value like '3301%')
where t1.type = 101 OR  ( t1.type = 102 AND t2.id  is not NULL )
2017年6月17日 21:47