这个sql怎么写?比如 shuyu中有个数据为2那么就查处id为2的name值

来源:百度知道 编辑:UC知道 时间:2024/06/14 18:42:42
我要查出 这样一个结果集合,把在shuyu字段中搜索到的数字到id中查找,把这些id对应的name打出来 sql如何写?

id name shuyu
1 福建
2 广东
3 江苏
4 厦门 1
5 深圳 2
6 南京 3

比如 shuyu中有个数据为2那么就查处id为2的name值“广东”

不要跟我说select name where id=1,2,3

因为shuyu中有多少数据 有哪些数据是不确定的
一楼的,我会写了,但是你这么一说我又犹豫了,我这样设计表真有问题吗?我考虑的是运行速度,如果多一张,运行速度是否会降低呢?

select name from diqu where id in (select shuyu from diqu )

select * from table where id = (select * from table where shuyu='""' )

你这个表设计的就有问题,在一个表里居然还多对一.......,省可以单独出来做一张表,数据库表里的每一个字段都要有原子性。

你可以这样写select name where id in (1,2,3)
不过还是建议你重新做个表,这样写的话实在有点不方便,等数据量大了之后自己都搞不清

要查两张表确实是要比查一张慢,但数据库设计首先要考虑的并不是速度,而是对数据的管理。

还有就是本身套嵌查询也快不到哪去

关系数据库设计之时是要遵守一定的规则的。尤其是数据库设计范式1NF(第一范式),2NF(第二范式),3NF(第三范式)和BCNF。

这么设计没什么问题
表的层次关系经常这么设计
最常用的就是菜单了

不知道是不是我理解问题 感觉这样写就可以了
select a.name from qiqiu as a,shuyu as b where b.id=2

select name from diqu where id in(select distinct shuyu from diqu where shuyu is not null and shuyu<>'')