我在order by子句中使用FIELD函数时遇到了问题.
我的情况是产品可以有三个类别,用户可以选择首先显示的类别.因此,可以形成三种可能的查询.这些是:
查询1
SELECT
*
FROM
my_table
WHERE
main_categories_id = 2
ORDER BY FIELD(product_condition,
'graded',
'new',
'used');
Run Code Online (Sandbox Code Playgroud)
查询2
SELECT
*
FROM
my_table
WHERE
main_categories_id = 2
ORDER BY FIELD(product_condition,
'new',
'graded',
'used');
Run Code Online (Sandbox Code Playgroud)
查询3
SELECT
*
FROM
my_table
WHERE
main_categories_id = 2
ORDER BY FIELD(product_condition,
'used',
'new',
'graded');
Run Code Online (Sandbox Code Playgroud)
当产品条件为NULL时,这不能很好地工作,因为它始终首先显示具有NULL值的行.我需要这些才能出现在最后.
我试过在FIELD函数中添加NULL,但这似乎不起作用.
有谁知道我能做到这一点的方法?
谢谢你的帮助.
我想改变我的mysql.sock文件的位置,我试图阻止mysql然后编辑my.cnf
文件,但我收到一条消息
abdul @ OSS-240:〜$ service mysql stop
停止:拒绝发送消息,1个匹配的规则; type ="method_call",sender =":1.62"(uid = 1001 pid = 3159 comm ="stop"interface ="com.ubuntu.Upstart0_6.Job"member ="Stop"error name ="(unset)"requested_reply = 0 destination ="com.ubuntu.Upstart"(uid = 0 pid = 1 comm ="/ sbin/init"))
问题是什么
我有一个名为的文本文件sqlfile
,其中包含以下内容:
a.sql
b.sql
c.sql
d.sql
Run Code Online (Sandbox Code Playgroud)
我想要的是将它们存储在变量中然后使用for
循环打印.但在这里我只得到d.sql
脚本的输出.
剧本:
#!/bin/bash
while read line
do
files=`echo $line`
done < /home/abdul_old/Desktop/My_Shell_Script/sqlfile
for file in $files
do
echo $file
done
Run Code Online (Sandbox Code Playgroud) 我需要编写一个查询,它将使字符串之间的空格保持一致
即,字段order_text包含字符串,它们可以用单个空格或双倍或三倍分隔,我们不确定有多少个空格.我需要做的是使这些空间保持一致(即2个空格)
mysql> SELECT order_text FROM customer_cp_abdul LIMIT 4;
+------------------------------------------+
| order_text |
+------------------------------------------+
| Mar-2009-1008 |
| Mar-2009-514 Sep-2009-1603 Mar-2010-22 |
| Mar-2009-2505 May-2009-2733 |
| Mar-2009-1160 |
+------------------------------------------+
4 rows in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)