条件sql查询

发布于 2024-12-04 17:57:42 字数 505 浏览 1 评论 0原文

我有两个表,根据第一个表的值,我必须选择第二个表的列。

示例

table1

data1|data2|type
P3   | C   |  R
P1   | D   |  N
P2   | C   |  R
P1   | C   |  N
P2   | D   |  R
P3   | D   |  N

table2

name|revolution|nibs
C   |repeat    |may
D   |genocide  |fill

所以,我想根据这样的类型获取 data1 的值(R 代表旋转,N 代表笔尖)

查询 P3:

name|value
C   |repeat
D   |fill

查询 P1

name|value
C   |may
D   |fill

谢谢

I have 2 tables where depending on a value on the first one, i have to select a column on the second one.

Example

table1

data1|data2|type
P3   | C   |  R
P1   | D   |  N
P2   | C   |  R
P1   | C   |  N
P2   | D   |  R
P3   | D   |  N

table2

name|revolution|nibs
C   |repeat    |may
D   |genocide  |fill

So, I want to get the values for data1 according to the type as this (R for revolution, N for nibs)

Querying for P3:

name|value
C   |repeat
D   |fill

Querying for P1

name|value
C   |may
D   |fill

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

别低头,皇冠会掉 2024-12-11 17:57:42

标准方法是使用 CASE:

select 
    t1.data2,
    case t1.type
        when 'R' then t2.revolution
        when 'N' then t2.nibs
    end
from table1 t1
join table2 t2 on t1.data2 = t2.name
where data1 = ?

The standard approach to this is to use a CASE:

select 
    t1.data2,
    case t1.type
        when 'R' then t2.revolution
        when 'N' then t2.nibs
    end
from table1 t1
join table2 t2 on t1.data2 = t2.name
where data1 = ?
陌路终见情 2024-12-11 17:57:42
SELECT t2.name,  IF(t1.type='R',t2.revolution,t2.nibs) as value 
FROM table1 t1 
LEFT JOIN table2 t2 ON t1.data2 = t2.name
WHERE t1.data1 = ?
SELECT t2.name,  IF(t1.type='R',t2.revolution,t2.nibs) as value 
FROM table1 t1 
LEFT JOIN table2 t2 ON t1.data2 = t2.name
WHERE t1.data1 = ?
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文