我有一个非常简单的问题,我无法解决.我需要做这样的事情:
select distinct * from (1, 1, 1, 2, 5, 1, 6).
Run Code Online (Sandbox Code Playgroud)
有谁可以帮忙?
编辑
数据来自我们的一个客户的文本文件.它完全没有格式化(它是一个单一的,很长的文本行),但它可能在Excel中这样做.但这对我来说不实用,因为我需要在我的sql查询中使用这些值.每次我需要运行查询时这样做都不方便.
我很好奇.这些相应查询之间有什么区别:
SELECT * FROM `tablename`
SELECT * FROM `tablename` WHERE 1
SELECT * FROM `tablename` WHERE 1=1
我试图IF在MySQL选择查询中使用一个语句.
我在第一个AND语句之后收到错误IF.
SELECT J.JOB_ID,E.COMPANY_NAME,J.JOB_DESC,JT.JOBTYPE_NAME,J.COMPENSATION,ST.STATE_NAME,MC.METRO_CITY_NAME,I.INDUSTRY_NAME,
J.JOB_CONTACT_PERSON,J.DT_INSRT,J.JOB_TITLE,J.JOB_EXP_DATE,J.SKILLS
FROM JOBS J
JOIN EMPLOYER E ON J.COMPANY_ID=E.COMPANY_ID
JOIN LOOKUP_JOBTYPE JT ON J.JOB_TYPE=JT.JOBTYPE_ID
JOIN LOOKUP_STATE ST ON J.STATE_ID=ST.STATE_ID
JOIN JOBS_LOCATION JL ON J.JOB_ID=JL.JOB_ID
JOIN LOOKUP_METRO_CITY MC ON JL.METRO_CITY_ID=MC.METRO_CITY_ID
JOIN LOOKUP_INDUSTRY I ON J.INDUSTRY_ID=I.INDUSTRY_ID
JOIN JOBS_QUALIFICATION JQ ON J.JOB_ID=JQ.JOB_ID
JOIN LOOKUP_DEGREE_QUALIFICATION LDQ ON LDQ.QUALIFICATION_ID = JQ.QUALIFICATION_ID
WHERE J.ACTIVE='Y' AND J.DT_INSRT > COALESCE(pEmailSntDt,DATE_SUB(SYSDATE(),INTERVAL 4 DAY))
AND
IF(JQ.COURSE_ID=0)
THEN
IF(JQ.DEGREE_ID=0)
THEN J.SKILLS LIKE CONCAT('%', pSkills,'%')
ELSE
JQ.DEGREE_ID=pDegreeId OR J.SKILLS LIKE CONCAT('%', pSkills,'%') …Run Code Online (Sandbox Code Playgroud) 我通过在MySQL数据库模式中引入浮点列遇到了一个问题,即浮点值的比较并不总是返回正确的结果.
1 - 50.12
2 - 34.57
3 - 12.75
4 - ......(休息时间均小于12.00)
SELECT COUNT(*) FROM `users` WHERE `points` > "12.75"
Run Code Online (Sandbox Code Playgroud)
这让我回归"3".
我已经读过MySQL中浮点值的比较是一个坏主意,十进制类型是更好的选择.
我是否有希望继续使用float类型并使比较正常工作?
我有一个sqlite数据库的问题.它似乎不支持完整的波斯语/阿拉伯语字符.当我基于波斯字符搜索某些字段时,大多数时候Sqlite无法识别那些字符.
我通过从HTML文件中复制数据将数据插入数据库.所以当我输入字符串和搜索时,没有结果显示.但如果我复制字符串和搜索,它的工作原理.
HTML文件中的字符串是:
"احكامخمس"
键入的字符串是:
"احکامخمس"
我有一个像这样的表(例如tableA):
| Name | Startdate | Enddate | |---------------------------------| | a | 2012-07-01 | 2013-06-30 | | b | 2011-05-01 | 2012-04-30 | | c | 2010-01-01 | 2013-12-31 | | d | 2013-01-01 | 2014-12-31 | | e | 2011-07-01 | 2012-06-30 |
我想从桌子上得到一个活跃于和之间的名字.从上表中,结果应该是a,c和e.2012-05-012012-10-31
我所做的如下:
SELECT Name FROM tableA WHERE startdate<='2012-05-01' AND enddate>='2012-10-31'
Run Code Online (Sandbox Code Playgroud)
但我得不到正确的结果.
嗨,我知道有很多主题专门讨论查询优化策略,但是这个主题太具体了,我无法在Internet上的任何地方找到答案。
我在eshop中有一个大表的产品(约18万行),该表有65列。是的,我知道很多,但是我在那里存储有关书籍,DVD,蓝光和游戏的信息。
仍然我没有考虑查询很多列,但是选择仍然很棘手。有许多条件需要考虑和比较。查询以下
SELECT *
FROM products
WHERE production = 1
AND publish_on < '2012-10-23 11:10:06'
AND publish_off > '2012-10-23 11:10:06'
AND price_vat > '0.5'
AND ean <> ''
AND publisher LIKE '%Johnny Cash%'
ORDER BY bought DESC, datec DESC, quantity_storage1 DESC, quantity_storege2 DESC, quantity_storage3 DESC
LIMIT 0, 20
Run Code Online (Sandbox Code Playgroud)
我已经尝试在where子句中甚至逐个order子句中在cols上逐一放置索引,然后我尝试在on上创建复合索引(生产,publish_on,publish_off,price_vat,ean)。
查询仍然很慢(几秒钟),并且需要快速,因为它的eshop解决方案和人们因无法快速获得结果而离开。而且,我仍然没有计算搜索所有找到的行所需的时间,以便可以进行分页。
我的意思是,使其快速完成的最佳方法是简化查询,但是在这种情况下,必须满足所有条件和排序。
任何人都可以帮助解决此类问题吗?甚至有可能加快这种查询的速度,还是有其他方法可以简化查询,而将其余的留在php引擎上以对结果进行排序。
哦,我真的对此一无所知。请分享您的智慧
提前谢谢了
假设,我有一个存储过程,它接受一个参数 - id,并返回一些与此 id 相对应的数据。如果我想检索所有这些数据,比如在 SELECT 查询中使用通配符怎么办?这该怎么做?
我想在Alert表中列的最新非空值ignition_status.
我的列unix_time是Unix时间戳中的时间,因此最大unix_time列值,最新是条目.
以下是我的代码
cursor = dbUtilsObj.query(Alert.TABLE_NAME, new String[] { alertType_COLUMN }, " MAX(" + Alert.Columns.KEY_ALERT_UNIX_TIME
+ ")" + AND + Alert.Columns.KEY_MACHINE_TELE_DEVICE_NO + EQUALS + AND + alertType_COLUMN + IS_NOT_NULL,
new String[] { String.valueOf(teleDevieNo) }, null, null, Alert.Columns.KEY_ALERT_UNIX_TIME);
Run Code Online (Sandbox Code Playgroud)
得到错误
(1) misuse of aggregate function MAX()
: android.database.sqlite.SQLiteException: misuse of aggregate function MAX() (code 1): , while compiling: SELECT ignition_status FROM alert WHERE MAX(unix_time) and tele_device_no = ? and ignition_status IS NOT NULL ORDER …Run Code Online (Sandbox Code Playgroud) select-query ×10
mysql ×3
sql ×3
sql-server ×3
android ×2
sqlite ×2
arabic ×1
comparison ×1
if-statement ×1
interbase ×1
max ×1
performance ×1
persian ×1
select ×1
t-sql ×1