我正在寻找帮助为这种情况创建正确的SQL ...
两个表模型和序列简化
Model
-----
CODE | MAKE | MODEL
Serials
-------
CODE (FK) | SERIAL
我想检索MADE ='some value'的CODE,MAKE和SERIAL 我只想要不同的CODES ......
答案 0 :(得分:1)
select distinct code, make, model from model inner join code on model.code = serials.code where model = 'some value';
答案 1 :(得分:1)
不确定这是不是你的意思,但你试过了吗?
SELECT DISTINCT code, make, serial
FROM model, serials
WHERE model.code = serials.code
AND make = 'some value'
答案 2 :(得分:1)
您的表的设置方式每个Code的Serials中会有多行,不是吗?如果是这样,则无法为单个代码获取 所有 序列号,而无需为该代码获取多行。这是你的意思,只是得到不同的代码?如果是这样,你不能这样做......但是否则......
try this:
Select Code, Make, Serial
From Model M
Join Serials S
On M.code = S.code
Where Make = 'some value'
答案 3 :(得分:0)
select distinct Model.Code
from Model JOIN Serials on Model.Code = Serials.Code
where make = 'some value' and Serials.Serial not null
阅读其他答案的评论后进行编辑。
答案 4 :(得分:0)
假设代码为PRIMARY KEY
(否则,您无法提及FK
):
SELECT code, make,
(
SELECT serial
FROM serials
WHERE serials.code = model.code
LIMIT 1
)
FROM model
WHERE MAKE = 'some value'
这是MySQL
语法。
当您有code
的多个序列号时,需要定义要显示的序列,并在子查询中添加ORDER BY
子句。
如果您有这些数据:
code make model
123 SOME VALUE Ford Sierra
code serial
123 1
123 2
,是否要显示序列1
或2
以及原因?