MYSQL中 select * from table1 t1, table2 t2 where t1.name= t2.name
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MYSQL中 select * from table1 t1, table2 t2 where t1.name= t2.name相关的知识,希望对你有一定的参考价值。
name是中文,表数据1万多条,查一下要15秒,怎么解决效率问题?
如果能更改表结构:
1、增加一个表table3,字段为id,name,主键id
2、table1、table2分别增加一个外键字段nameid,来自于table3的id
3、 select * from table1 t1, table2 t2 where t1.nameid= t2.nameid
比如t1中有name值为a,然后t2中有name值a跟b,当t1值比较t2值时,a=a数据不输出,a=b数据输出,表与表关联,关联条件时中的值是要全部进行匹配的。
应用环境
与其他的大型数据库例如 Oracle、DB2、SQL Server等相比,mysql自有它的不足之处,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于 MySQL是开放源码软件,因此可以大大降低总体拥有成本。
以上内容参考:百度百科-mySQL
参考技术A 如果能更改表结构:1、增加一个表table3,字段为id,name,主键id
2、table1、table2分别增加一个外键字段nameid,来自于table3的id
3、 select * from table1 t1, table2 t2 where t1.nameid= t2.nameid
如果不能修改表结构:
1、两个表都增加索引,name
2、也可以通过程序来搞定,例如php,把两个表中的数据分别存放入两个数组,然后依据name组装数组 参考技术B 感觉你要查询所有的数据,没有什么可以解决效率的,你可以建立索引
MYSQL IF SELECT COUNT() 大于零 select * from table else return nothing found
【中文标题】MYSQL IF SELECT COUNT() 大于零 select * from table else return nothing found【英文标题】:MYSQL IF SELECT COUNT() Is greater that zero select * from table else return nothing found 【发布时间】:2014-03-22 11:12:12 【问题描述】:我正在寻找一种方法来进行如下查询:
Mysql:
示例:IF
SELECT COUNT(column_XX) WHERE column_XX = value_XX
FROM table_XX
大于零 (0
) 然后 SELECT
一切或 SELECT * FROM
that table_XX WHERE column_XX = value_XX
和 return em> 所有数据 ...否则返回 '没有找到' 或只是零 (0
)
简单来说,如果列中的所有值都大于零,我想从表列中选择所有数据,否则只选择值>=1 并返回所有值。
在SINGLE QUERY中可以应用哪种魔法来完成它?...我真的卡住了,谢谢。
【问题讨论】:
你说的单查询,没有连接的查询是什么意思? 是的,对于关节或任何可以工作但不像 Query1: COUNT 然后 QUERY2: 在PHP
级别中选择...。COUNT
和 SELECT
应该在 @ 执行987654332@ 级别我只需要PHP
级别的结果......希望它很清楚......再次感谢!
【参考方案1】:
这行得通吗!
SELECT * FROM test_enum;
+------+-------+----------+
| ID | Name | IsActive |
+------+-------+----------+
| 1 | Abdul | No |
| 1 | Abdul | Yes |
+------+-------+----------+
2 rows in set (0.00 sec)
SELECT * FROM test_enum WHERE EXISTS(SELECT * FROM test_enum WHERE IsActive = 'No') AND IsActive = 'No';
+------+-------+----------+
| ID | Name | IsActive |
+------+-------+----------+
| 1 | Abdul | No |
+------+-------+----------+
1 row in set (0.00 sec)
【讨论】:
【参考方案2】:你可以这样尝试:
SELECT * FROM table_XX
WHERE column_XX = (
SELECT column_XX FROM table_XX
WHERE column_XX = value_XX GROUP BY column_XX HAVING COUNT(column_XX) > 0
)
【讨论】:
SUPER BRAIN!.... 只是一件事如何在这个战术中假定IF
和 ELSE
结构?
我的意思是我将如何使用ELSE
到return
零 (0)
或'没有找到' if
@987654328 @ 是 <
1
在 DB 级别?
@UniversalGrasp 只会是空结果集,还不够吗?
好的....我不能同意更多....感谢一百万次...这为我节省了大量的谷歌搜索时间.... [接受的答案]以上是关于MYSQL中 select * from table1 t1, table2 t2 where t1.name= t2.name的主要内容,如果未能解决你的问题,请参考以下文章
MySQL SELECT * WHERE column ='value'from 2 tables
Mysql DB select from table where field语句java
MySQL中SELECT * FROM [变量] 如何实现?
MYSQL:SELECT * FROM customer_table 隐藏 customer_password? [复制]
MYSQL IF SELECT COUNT() 大于零 select * from table else return nothing found